[英]error when i am calling next view controller
我在調用下一個視圖控制器時遇到錯誤,我想調用一個動作繼續的視圖控制器。只有當我們第一次運行時,此屏幕才會第一次出現。 控制器不會進入下一個視圖。
-(void)viewDidLoad
{
welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];
[self presentViewController:temp animated:YES completion:^(void){}];
}
警告:嘗試顯示不在窗口層次結構中的視圖!
使用此代碼
-(void)viewDidLoad
{
welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];
[self presentViewController:temp animated:YES completion:nil];
}
如果您使用的是Storyboard:請使用此
InstantiateViewControllerWithIdentifier
UIViewController objController = [self.storyboard instantiateViewControllerWithIdentifier:@"StoryBoard Id"];
[self presentViewController:objController animated:YES completion:nil];
要設置Storybaord ID, 請在此處檢查 。
該錯誤意味着您正在嘗試從當前不在屏幕中的視圖控制器中呈現模式視圖控制器。
此錯誤表示您正在嘗試從屏幕上尚未顯示的視圖中顯示“歡迎頁面”。
知道僅將代碼移到viewDidAppear方法對您不起作用,您可以嘗試執行以下操作:
-(void)viewDidAppear
{
[self presentWelcome];
}
- presentWelcome {
welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];
[self presentViewController:temp animated:YES completion:^(void){}];
}
這里發生的是,當視圖出現時(因此,當它處於視圖層次結構中時),控制器啟動了一個函數,該函數調用另一個viewController。 希望這能解決您的問題。
希望這對您有所幫助!
試試這個
您可以像這樣更改Appdelegate.m didFinishLaunchingWithOptions方法中的代碼
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = nav;
在這樣的ViewDidLoad方法中。
welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];
[self.navigationController presentViewController:temp animated:YES completion:nil];
要關閉視圖控制器,您可以在welcomepage按鈕操作中編寫以下代碼
-(IBAction)dismiss:(id)sender{
[self dismissViewControllerAnimated:YES completion:nil];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.