簡體   English   中英

從內部視圖控制器推送視圖控制器

[英]Pushing view controller from inner view controller

就像在這個問題中所解釋的那樣,我有一個視圖控制器,在某些情況下可能不存在數據時,需要用不同的布局替換自身。 這似乎可行:

if ([analysis length] == 0) {
    hasReview = NO;
    UnreviewedSPP* unreviewedSPPView = [[UnreviewedSPP alloc] init];
    unreviewedSPPView.ProductName = self.productName;
    unreviewedSPPView.SdcId = self.sdcId;
    unreviewedSPPView.Delegate = self;
    NSArray* newViews = [[NSBundle mainBundle] loadNibNamed:@"UnreviewedSPP" owner:unreviewedSPPView options:nil];
    self.view = [newViews objectAtIndex:0];
    return;
}

但是,似乎我不能從替換視圖中推送新的視圖控制器:

    [priceButton handleControlEvent:UIControlEventTouchUpInside withBlock:^{
        WebViewController* wv = [[[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil] autorelease];
        wv.url = offerURL;
        [Delegate performSelector:@selector(pushViewControllerFromSubview:) withObject:wv];
    }];

priceButton是一個自定義按鈕對象,可以將塊作為目標動作執行。

我嘗試了多種方法:將外部視圖控制器作為委托傳遞,並將外部視圖控制器的導航控制器作為內部視圖控制器的屬性傳遞。

似乎沒有任何作用。 有更好的解決方案嗎?

題:

1)當您調用pushViewControllerFromSubview時,是否保留了wv? 我注意到您在這里有自動發行協議。 檢查pushViewControllerFromSubview中的wv視圖。

2)另一種替換視圖的方法是使用'[self.view addSubView:myView];' 和[myView removeFromSuperView];'...這可能比推送視圖控制器更好。

干杯

根本原因是我的“外部視圖”實際上是一個子視圖,因此我無法直接訪問其導航控制器。 我已經忘記了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM