如何使用情节提要正确地转到嵌入式选项卡栏和导航控制器?

Posted

技术标签:

【中文标题】如何使用情节提要正确地转到嵌入式选项卡栏和导航控制器?【英文标题】:How To Correctly Segue To An Embedded Tab Bar and Navigation Controller Using Storyboards? 【发布时间】:2012-09-17 18:31:03 【问题描述】:

我有一个应用程序,用户可以在其中从选择轮中选择他们的国家/地区。出现警报并要求他们确认更改。如果他们确认,它会将他们带到不同的视图,然后他们可以从类别列表中选择以显示信息...

类别列表嵌入在导航控制器中,便于从详细视图“返回”移动到类别选择视图。

整个应用程序嵌入在一个标签栏控制器中。

它工作正常(在选择他们的国家后,他们会被带到选择类别屏幕),只是现在选择类别已经失去了与选项卡栏控制器的连接,并且无法返回应用程序的其他部分。

这是我的 alertView 代码:

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 

if (buttonIndex == 0) 
NSLog(@"ok");

//I tried the following but it doesn't do anything
//SelectCategory *switchtocategory = [[SelectCategory alloc] init];
//[self.navigationController pushViewController:switchtocategory animated:YES];

//the following works but loses the tab/navigation bars
[self performSegueWithIdentifier: @"GoToCategory" sender: self];

     else 

    NSLog(@"cancel");


【问题讨论】:

【参考方案1】:

找到答案实际上是要了解 Tab Bar Controller 的角色,它如何默认为根视图控制器,然后如何使用它来访问各种视图控制器,而不是尝试进行 segue。阅读 Apple 文档对此有所帮助,但代码变得非常简单:

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex


if (buttonIndex == 0) 

    NSLog(@"ok");

//the following transitions to tab #3 when the alertView is touched/clicked/dismissed

    [self.tabBarController setSelectedIndex:2];

     else 

    NSLog(@"cancel");



【讨论】:

以上是关于如何使用情节提要正确地转到嵌入式选项卡栏和导航控制器?的主要内容,如果未能解决你的问题,请参考以下文章

标签栏项目图像不会随着情节提要的使用而改变

无法从 iOS 的情节提要中嵌入导航控制器

如何快速隐藏嵌入在导航堆栈中的视图控制器中的选项卡栏?

Xcode 选项卡栏项目在情节提要中不可见

如何将标签栏控制器插入情节提要?

添加子视图会在子视图和导航栏之间留下空隙