將一個UINavigationController
ivar添加到UIView
並將其分配給主視圖控制器。那麼你應該可以從UIView
訪問它。
編輯:
您UIView子類:
// CustomView.h
@interface CustomView: UIView {
// ...
// your variables
// ...
UINavigationController *navController;
}
@property (nonatomic, assign) UINavigationController *navController; // assign, because this class is not the owner of the controller
// custom methods
@end
// CustomView.m
@implementation Customview
// synthesize other properties
@synthesize navController;
// implementation of custom methods
// don't release the navigation controller in the dealloc method, your class doesn't own it
@end
然後前[self.view addSubview:showContactFlow];
線只需添加[showContactFlow setNavController:[self navigationController]];
,然後你應該能夠從您的UIView
訪問您的層次結構的導航控制器,並用它來推動其他UIViewController
s。
標準的動畫這不是正確的方式做這件事,視圖和視圖控制器是不同類型的對象。視圖控制器確實有一種uiviews沒有的層次結構。你實際上無法從普通的視圖控制器中推導出導航控制器(在ios5中,你可以做到這一點,但在邏輯上不正確)。您需要在視圖控制器內部創建一個您想要顯示的uinavigationcontroller,然後以模態方式顯示它。如果你只是想模擬推動畫的行爲,你可以簡單地使用核心動畫或者只是使用uiview的動畫。 – Andrea 2012-04-01 13:55:16
好的。我知道了。我只想知道,我如何從其父'UIViewController'處理'UIView's'按鈕事件。 – 2012-04-02 04:19:53
哈維你可以嘗試解釋更好的問題,因爲我沒有得到你如何設置應用程序。因爲對我來說,push意味着'[self.navigationController pushViewController:vc animated:YES]'的動作。我沒有得到它,對不起 – Andrea 2012-04-02 09:01:07