首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationController用于UITabController中的表

UINavigationController用于UITabController中的表
EN

Stack Overflow用户
提问于 2011-12-12 19:17:24
回答 1查看 201关注 0票数 0

我的应用程序是用UITabController构建的,其工作原理是想象中的。但是,对于我的UITabBar中的一个视图,我想添加一个表,当按下某些东西时,它会带我去某个地方。我想在这张图上做这件事。

我知道如何构建一个表格,填充,并让它去某个地方,但我的问题是,我似乎无法让我的应用程序与表一起运行。我觉得我的连接是关闭的,特别是与appDelegates。在添加appDelegate之前,我已经有了两个UINavigationController文件(.h & .m),因此我真的不知道该做什么。我拿了苹果的simpleTableView教程文件,并把它们拷贝到我的。它还是会崩溃。我甚至复制了那里的appDelegate文件(所以现在我有4个),但同样的交易。这是我正在犯的错误,但总的来说,我只是对委托和联系感到迷茫。

2011-12-12 12:08:50.302 TabbedCalculation68713:207个*终止应用程序由于未登录的异常'NSUnknownKeyException',原因:‘setValue:forUndefinedKey::该类不符合键委托的键值编码。’*第一次抛出时调用堆栈:

如果有人能提供任何帮助,我们将不胜感激。

谢谢!

P.S.我在UITabController的UITabController中更改了一个选项卡指向适当的类和xib文件,所以这不是问题,但我注意到许多教程希望在应用程序委托中将这一行放到navController:[window addSubview:navigationController视图];

但我已经把它设置为tabBarController了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-12 19:31:39

您的应用程序只能使用一组应用程序委托文件。因此,复制示例的应用程序委托文件并不意味着它们正在被利用。您需要在要包含tableview的特定选项卡中设置一个导航控制器。下面是一个示例,通过修改应用程序委托中的didFinishLaunchingWithOptions,在选项卡条控制器中使用导航控制器:

代码语言:javascript
复制
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    AllTaskViewController *view1 = [[AllTaskViewController alloc] initWithNibName:@"AllTaskView" bundle:nil];
    view1.title = @"All Tasks";

    TodayTaskViewController *view2 = [[TodayTaskViewController alloc] initWithNibName:@"TodayTaskView" bundle:nil];
    view2.title = @"Today's Tasks";

    HistoryViewController *view3 = [[HistoryViewController alloc] initWithNibName:@"HistoryView" bundle:nil];
    view3.title = @"History";

    SettingsTableViewController *view4 = [[SettingsTableViewController alloc] initWithNibName:@"SettingsTableView" bundle:nil];
    view4.title = @"Settings";

    UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:view1];
    UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:view2];
    UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:view3];
    UINavigationController *nav4 = [[UINavigationController alloc] initWithRootViewController:view4];

    [view1 release];
    [view2 release];
    [view3 release];
    [view4 release];

    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2, nav3, nav4, nil];

    [nav1 release];
    [nav2 release];
    [nav3 release];
    [nav4 release];

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];    

    return YES;
}

注意:所有4个视图控制器都有一个单独的导航控制器,每个视图控制器都是一个自定义视图控制器。我在这里用了尼布,但你没必要这么做。而且应用程序本身没有主窗口,如果您使用的是主窗口,则需要稍微修改这个窗口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8479580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档