【问题标题】:TabBarController + TableViewController + Navigation Controller?TabBarController + TableViewController + 导航控制器?
【发布时间】:2012-02-04 11:45:07
【问题描述】:

我是 iphone 开发新手,我想制作一个结合 TabBarController + UITableViewController + UINavigationController 的应用程序。我知道这个问题在一些视频教程和线程中得到了广泛的讨论,但其中一些是针对旧的 xcode 和 sdk 版本的,我在阅读教程时遇到了问题。

如果有人可以帮助我提供最新的教程或源文件,我会很高兴。

明确地说,我试图让我的应用程序基于一个带有两个选项卡的选项卡栏控制器:第二个将是一个简单的视图,第一个应该包含一个 tableviewcontroller 和一个导航控制器。当我单击一个单元格时,它应该会移动到另一个“详细信息”视图。

任何帮助都会很棒。

【问题讨论】:

    标签: iphone sdk uinavigationcontroller uitabbarcontroller tableview


    【解决方案1】:

    好的,这会很长:

    AppDelegate.h 分配一个UITabBarController一个UINavigationController和2个UIViewControllers

    例如:

    UITabBarController *mainTabBar;
    UINavigationController *navController;
    UIViewController *firstViewController;
    UIViewController *secondViewController;
    

    然后移动到 AppDelegate.m 并像这样实例化这 4 个项目中的每一个:

    mainTabBar = [[UITabBarController alloc] init];
    
    firstViewController = [[firstView alloc] init];
    

    对两个视图都这样做

    那么如果你想设置任何一个视图的标题,(这将是显示在标签栏中的标题)按如下方式进行:

    firstViewController.title = @"Welcome";
    

    然后为其中包含UITableView 的视图创建UINavigationController,如下所示:

    navController = [[UINavigationController alloc] init];
    [navController  pushViewController:firstViewController animated:NO];
    

    现在你有一个UIViewController 和一个UINavigationController,里面有一个UIViewController

    剩下的就是把你的两个标签放到UITabBarController:

    mainTabBar.viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController,  nil];
    

    然后只需将标签栏控制器放在屏幕上,您就可以开始了:

    [window addSubview:mainTabBar.view];
    

    要记住的几件事:

    • 确保释放调用 alloc 的所有内容,以便使用良好的内存管理。
    • 确保您导入了您打算在AppDelegate.h 中使用的所有文件,它应该类似于:#import "FirstView.h

    如果您有任何问题,请在评论中告诉我

    【讨论】:

    • 感谢您抽出所有时间回答 user635633。我通过您的解决方案制作了一个新项目,这很好。一开始只有一个错误,因为视图控制器没有出现,所以我修改了这一行如下:'mainTabBar.viewControllers = [NSArray arrayWithObjects:navController, secondViewController, nil]; ' 所以刚才我将按照我的理解将 tableview 添加到 ViewController 中。谢谢。
    • 当我单击 FirstViewController 上的某个按钮时,我在添加包含 TableViewController 到堆栈的视图时遇到问题。有什么想法吗?
    • 您对该更正的权利。抱歉,我只是混淆了标签栏中应该包含的内容。我很高兴这有帮助。
    • 在视图中有一个按钮。在 Interface builder 中链接到 IBAction,然后在该方法中分配一个新的视图控制器:tableViewController = [[tableViewController alloc]initWithNibName:@"tableViewController" bundle:nil]; 然后只需推送新的视图控制器:[self.navigationController pushViewController:tableViewController animated:YES];
    【解决方案2】:

    Apple 开发人员库门户上的文档,标题为 Combined View Controller Interfaces,解释了如何通过使用 Interface Builder 以及以编程方式完成您所追求的目标。我最近按照该页面上的文档创建了一个应用程序的一部分,它完全可以完成您想做的事情。

    【讨论】:

    • 好的,谢谢。我会专注于那个文档,希望我能得到满意的 inchallah。
    猜你喜欢
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    相关资源
    最近更新 更多