您的解決方案無法工作。
假設您的模態控制器名爲ModalViewController
。這是一個簡單的UIViewController
與一個xib創建的接口鏈接。
現在,在某些時候,您需要以模態方式呈現ModalViewController
。正如您在規範中所寫的,我認爲您還想使用UINavigationController
並控制其導航欄。
執行此操作的代碼可能如下所示,其中presentModally
可能是它未包含在ModalViewController
中的一種方法。現在
- (void)presentModally:(id)sender {
ModalViewController *modalController = [[ModalViewController alloc] initWithNibName:@"ModalView" bundle:nil];
// Create the navigation controller and present it.
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:modalController];
[self presentViewController:navigationController animated:YES completion: nil];
}
,內viewDidLoad
您ModalViewController
您可以訪問navigationController屬性。通過這種方式,您可以控制navigationController
行爲。例如:
- (void)viewDidLoad
{
[super viewDidLoad];
// the code changes the title for the navigation bar associated with the UINavigationController
self.title = @"Set from ModalViewController";
}
的一些注意事項
要了解UINavigationController
作品如何閱讀UINavigationController class reference
爲了理解工作控制器如何語氣讀Modal view controllers documentation
我提供的代碼是一個簡單的例子,只有示範(我已經手寫,所以檢查語法)。您需要關注內存管理以及如何呈現模態控制器。特別是,正如Apple文檔所述,要顯示模式控制器,您需要執行以下步驟:
創建您要呈現的視圖控制器。
將視圖控制器的modalTransitionStyle屬性設置爲所需的值。
將委託對象分配給視圖控制器。通常,委託是呈現視圖控制器。所呈現的視圖控制器使用委託來通知呈現視圖控制器何時準備被解散。它也可能將其他信息傳回給代表。
調用presentViewController:animated:completion:當前視圖控制器的方法,傳入要呈現的視圖控制器。
觸發(必要時)一些動作來解除模態控制器。
希望它有幫助。
這是代碼很混亂。您不能將視圖從一個控制器設置到另一個控制器的視圖。而且控制器通常不希望將他們的視圖添加爲其他控制器視圖的子視圖。 – smparkes