[英]present a storyboard UIViewController from a UIScrollView subview
我正在嘗試從UIScrollView子視圖呈現視圖控制器。 我曾嘗試使用AppDelegate window.rootViewController presentViewController:但這使我“視圖不在層次結構中!” 錯誤。 我想避免使用addSubview,因為這會破壞MVC並似乎刪除了控制器的功能(按鈕停止工作)。 當我使用預期的presentViewController方法時,我得到“ InititalScrollViewSubview的無可見@interface聲明選擇器” presentViewController:animated:completion:”,我認為這意味着我的initialScrollViewSubview嘗試使用presentViewController,但presentViewController必須來自於UIViewController。UIScrollView沒有presentViewController方法。
我的代碼是這樣的:
-(void)setupTouchIDButtonTapped: (id)sender {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"newViewController" bundle:nil];
NewViewController *myNewViewController = [storyboard instantiateViewControllerWithIdentifier:@"myNewVC"];
//我嘗試過的第一件事:
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.window.rootViewController presentViewController:NewViewController animated:YES completion:nil];
//我嘗試過的第二件事
[self addSubview:NewViewController.view];
//我嘗試的第三件事:
[self presentViewController:NewViewController animated:YES completion:nil];
}
InitialScrollViewSubview必須保持原樣。 理想情況下,我會重構所有內容,因此InitialScrollViewSubview是另一個UIViewController,但是我為一家大型公司工作,並且該應用程序太大了:)任何建議都將不勝感激!
謝謝!!
如果您試圖在滾動視圖中“嵌入”視圖控制器的視圖,則不要顯示該視圖控制器。 您實例化它,然后將其視圖添加到視圖層次結構中。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"newViewController" bundle:nil];
NewViewController *myNewViewController = [storyboard instantiateViewControllerWithIdentifier:@"myNewVC"];
[scrollView addSubview:NewViewController.view];
您還需要設置視圖的大小/框架或設置自動布局約束,以便正確調整視圖控制器的大小。
嘗試這個
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@“ newViewController”捆綁包:無];
NewViewController *myNewViewController = [storyboard instantiateViewControllerWithIdentifier:@"myNewVC"];
AppDelegate * delegate =(AppDelegate *)[[UIApplication sharedApplication]委托];
UINavigationController * rootNvc =代表。窗口.rootViewController;
[rootNvc pushViewController:NewViewController動畫:是];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.