2012-01-16 6 views
1

this questionで説明したように、データが存在しない特定のケースでは、別のレイアウトに置き換える必要があるビューコントローラがあります。これが動作しているようです:ビューコントローラを内側ビューコントローラから押し出す

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

質問:

1)あなたはpushViewControllerFromSubviewを呼び出すときに...保持されているWVていますか?私はあなたがここでオートリリース契約を結んでいることに気付きます。 pushViewControllerFromSubview内のwvビューを確認してください。

2)ビューを置き換えるもう1つのアプローチは、 '[self.view addSubView:myView];を使用することです。 [myView removeFromSuperView]; '...これはビューコントローラをプッシュするよりも優れたアプローチです。

乾杯

+1

は、ここでは歓迎されないので、あなたの署名を削除しました:http://stackoverflow.com/faq#signatures – eckes

+0

サブビューとして追加することを通知してくれてありがとう。なぜそれが私に起こらなかったのか分かりません。 – James

0

根本原因私は直接そのナビゲーションコントローラにアクセスすることができませんでしたので、私の「外側のビューは、」実際にサブビューということでした。私はそれを忘れていた。