[英]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.