希望在现有的 UITabBarController 中创建 UINavigationView 或 UITableView
Posted
技术标签:
【中文标题】希望在现有的 UITabBarController 中创建 UINavigationView 或 UITableView【英文标题】:Looking to create UINavigationView or UITableView in an existing UITabBarController 【发布时间】:2011-12-20 03:18:16 【问题描述】:所以我使用 UITabBarController 应用程序的模板来创建一个应用程序,但我发现自己处于无法解决的情况。我正在寻找创建我的最后一个视图(带有 FourthViewController 类的 viewcontroller4 实例)实际上是 UITableViewController/UITableView/或 UINavigationController。我真的不知道哪个最适合我的需要。
基本上它应该是一个带有表格视图的信息屏幕,您可以点击一个单元格并选择不同的视图(设置、关于应用程序、帮助、支持电子邮件)。关于如何实现这一点的任何想法?我尝试用 UINavigation 控制器替换列出的 UIViewController (viewcontroller4)。
以下是我的 appdelegate.m 代码供参考:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
UIViewController *viewController1, *viewController2, *viewController3, *viewController4;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil];
viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil];
viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController_iPhone" bundle:nil];
viewController4 = [[FourthViewController alloc] initWithNibName:@"FourthViewController_iPhone" bundle:nil];
else
viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil];
viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPad" bundle:nil];
viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController_iPad" bundle:nil];
viewController4 = [[FourthViewController alloc] initWithNibName:@"FourthViewController_iPad" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, viewController4, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
【问题讨论】:
【参考方案1】:不确定您是如何尝试创建 UINavigationController
的,但它会正常工作。创建 viewController 后,请执行以下操作:
UINavigationController *navController = [[UINaviagtionController alloc] initWithRootViewController:viewController4];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, navController, nil];
// rest of your code
【讨论】:
谢谢!现在我如何将它链接回在第四视图控制器的 xib 中工作?当我运行它时,当前显示的是在文件所有者(我认为)和导航视图中关联的 UIView。我需要为 UINavigationViewController 声明一个 IBOutlet 吗? 您根本不需要更改您的 XIB。此示例以编程方式创建导航控制器。您的 FourthViewController 将根据 XIB 保持正确配置。您需要编写代码从那里推送所需的视图控制器。 那么现在我可以在 UIView 中使用 TableView 进行导航了吗?另外,感谢您花时间回答我的问题。 没错。没问题,尽情享受您的应用吧。 Apple 文档中的 Table View Programming Guide 和 View Controller Programming Guide 也会有很大帮助。以上是关于希望在现有的 UITabBarController 中创建 UINavigationView 或 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
将新的 ViewController 嵌入到现有的 UITabBarController 中?
双击UITabBarController时防止自动popToRootViewController
如何获取现有的 UITabBarController 实例?