我有一个主故事板,其设置如下
- 导航控制器(是初始视图控制器)
----表视图控制器(根视图控制器) - #1
---- UI视图控制器(segue类型是来自Nav.Ctrl的模态) - #2
#1连接到自定义类
#2连接到不同的自定义类
在#1内部,当一个按钮从一个表格单元格中点击时...我想调用#2来完成某些事情并希望回来(通过单击后退按钮)到#1
我尝试了几个不同的代码,没有运气!
下面的代码会生成黑屏,但Navbar info包含返回主页的选项
vcControl2 *popup = [[vcControl2 alloc] init];
popup.modalPresentationStyle = UIModalPresentationFormSheet;
[self.viewController.navigationController pushViewController:popup animated:YES];
以下代码会生成带有空白导航栏信息的黑屏
vcControl2 *vc = [[vcControl2 alloc] initWithNibName: nil bundle:nil ] ;
UINavigationController * navcontroller = [[UINavigationController alloc] initWithRootViewController:vc];
[self.viewController presentModalViewController: navcontroller animated: YES];
下面的代码会生成黑屏,没有Navbar信息
vcControl2 *popup = [[vcControl2 alloc] init];
popup.modalPresentationStyle = UIModalPresentationFormSheet;
[self.viewController presentModalViewController:popup animated:YES];
有什么想法?
我已经通过以下方法解决了这个问题,并在此处为未来用户提供。
在storyboard上,选择了Table View Controller(根视图控制器)中可用的Prototype单元格 - #1
点击并创建一个风格为“Push”的“storyboard segue”,并将其命名为“Detail”
在我的代码中,我已经在下面成功调用了#2(UIVwCtrl)
[self performSegueWithIdentifier:@"Detail" sender:self];
答案 0 :(得分:0)
如果您使用的是Storyboard
,则应使用 instantiateViewControllerWithIdentifier
方法加载视图控制器:
YourViewControllerClass *popup = [[UIStoryboard storyboardWithName:@"YourStoryboardName" bundle:nil] instantiateViewControllerWithIdentifier:@"YourPopupViewControllerID"];
popup.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:popup animated:YES];
请注意方法:
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil
将故事板名称不带文件扩展名。