我想通过在 Swift 中以编程方式将 UINavigationController 与 UITableViewController 嵌入 UITableViewController 这是 UITab

Posted

技术标签:

【中文标题】我想通过在 Swift 中以编程方式将 UINavigationController 与 UITableViewController 嵌入 UITableViewController 这是 UITabBarViewController 的子视图【英文标题】:I would like to embed UINavigationController with UITableViewController which is the sub-view of UITabBarViewController by programmatically in Swift 【发布时间】:2014-11-15 03:34:18 【问题描述】:

最近想做一个自学App,这个App看起来像ios中的Contacts App。首先,我有两个 UITableViewController 连接到 UITabBarViewController。然后我想通过编码将 UINavigationController 与这两个表视图嵌入(在这种情况下,我不想通过设计将它嵌入到 Storyboard 中)。但我坚持下去。这是我在 AppDelegate

中的代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 

    let tabBar : UITabBarViewController = UITabBarViewController()
    let tableView1 : UITableViewController = UITableViewController()
    let nav = UINavigationController(rootViewController: tableView1)
    let tableView2 : UITableViewController = UITableViewController()
    let nav2 = UINavigationController(rootViewController: tableView2)
    tabBar.viewControllers = [nav, nav2]
    self.window?.rootViewController = tabBar

    return true

结果总是显示第一个tableView1。如何让它在 UITabBarViewController 中显示两个选项卡选项(在视图底部)?如果我通过在 Storyboard 中进行设计来实现它,我相信它会正常工作。但是通过编码,我不知道如何解决它。 请指导我。提前致谢!

【问题讨论】:

请更新您的代码以使其可运行。 mainView 来自哪里?不是UITabBarViewController,而是UITabBarController 您好 Rintaro,感谢您查看我的代码。是错别字的问题。 mainView 应该是tabBar*,它是UITabBarViewController 的对象。并且是另外2个UITableViewController的主视图。 【参考方案1】:

UIKit 中没有UITabBarViewController。它被称为UITabBarController。你的 ViewControllers 需要有 NavigationItems。如果您像在代码中一样显示它们,您将在底部有一个 Tabbar,但上面没有任何可见的东西。在您的情况下, NavigationControllers 是您需要定义 nav.navigationItem.title = ...

编辑: 我意识到你没有初始化窗口。这与您的其他问题无关,但您的代码看不到任何内容。所以你必须把它改成:

self.window = UIWindow(frame: UIScreen.mainScreen().bounds);
self.window?.rootViewController = tabBar
self.window?.makeKeyAndVisible();

【讨论】:

感谢您的回答,但我没有运气。 为什么,当我运行您的代码并与上面的行交换时,它会按预期显示控制器? 当我运行时,它会显示一个 tableview 但它不显示标题但是我已经设置了这两个 tableview 的标题。我对 Swift 完全陌生,所以我真的不知道。

以上是关于我想通过在 Swift 中以编程方式将 UINavigationController 与 UITableViewController 嵌入 UITableViewController 这是 UITab的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中以编程方式制作 Segue

在 Swift 中以编程方式居中按钮

在 Swift 中以编程方式为 CollectionView 设置插图

当 iAd 横幅出现时,如何将视图的内容上移? (在 Swift 中以编程方式)

如何在 Swift 中以编程方式打开 icloud 应用程序(文件)

如何在 Swift 中以编程方式将 UILabel 对象居中?