也许这不会有太大帮助,但如果您以编程方式执行此操作,这是一种方法,您可以将这个答案解释为 Storyboards:
-(void)dismiss
{
[[self navigationController] dismissViewControllerAnimated:true completion:nil];
}
-(void)showModal
{
NewCustomViewController * pvc = [NewCustomViewController new];
CustomNavigationController * ffs = [[CustomNavigationController alloc] initWithRootViewController:pvc];
[ffs setNavigationBarHidden:TRUE];
UIBarButtonItem * backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"exit-button"] style:UIBarButtonItemStylePlain target:self action:@selector(dismiss)];
[[pvc navigationItem] setLeftBarButtonItem:backBarButtonItem];
[[self navigationController] presentViewController:ffs animated:true completion:nil];
}
我过去创建了我自己的 UITabBarController,并成功地使用这个相同的方法从自定义 UITabBarController 子类进行模态表示,试试吧,我知道它不是故事板,但它是相似的。事实上,让我更改一些内容,让您更轻松。
另外,您的视图控制器是否嵌套在自定义标签栏中的 navigationControllers 中?
应该是这样的
UItabbarcontroller
navigationcontroller
viewcontroller
navigationcontroller
viewcontroller
this works the easiest, also, could be even better like this:
navigationController <== mainscreen rootViewController as a navigationController in the AppDelegate
UItabbarcontroller
navigationcontroller
viewcontroller
navigationcontroller
viewcontroller
现在,您说标签栏没有嵌套在导航控制器中,对吧?所以我们正在谈论这个:
应该是这样的
UItabbarcontroller
navigationcontroller
viewcontroller
navigationcontroller
viewcontroller
问题在于,如果我从 UItabbarcontroller 子类调用模态并执行以下操作:
self.navigationController present XXX etc. etc,
那么这将失败,很有可能是因为 tabbarcontroler 没有 navigationController
此外,如果您使用来自其中一个 veiwcontrollrs 的导航控制器调用 segue 导航,并且您尝试 self.navigationctonroller 存在,那么您会遇到同样的问题,没有 navigaitoncontroller。
你尝试从
中呈现模态
[self present ... blah blah
但是这样做不会允许来自呈现的模式的用户交互,因为它没有在导航控制器中呈现,我会将你的 TabbarViewcontroller 粉碎成一个导航控制器,它不应该那么难,然后我会将你的视图控制器植根首先在 Navigationcontroller 中的标签栏,然后再次尝试这些按钮,这只是三个额外的导航控制器,没什么大不了的