为什么我的UITableView不执行show segue,只呈现模态

时间:2015-05-24 09:19:34

标签: ios uitableview swift segue

大家好我的应用程序一直存在问题,因为UITableView中的所有segues只出现'present modally'(从底部开始)而不是show(从右侧显示)

相关的VC方法是

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 14
}


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {


    if segue.identifier == "selectionSegue" {

    let tabController = segue.destinationViewController as UITabBarController

        if let newController = tabController.viewControllers![0] as? SelectedItemViewController {
            if let row = tableView.indexPathForSelectedRow()?.row{
                newController.selectedItem = pList[row]
            }
         }
    }
}


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    itemViewItem = testList[indexPath.row%testList.count]
// where testList is a preconfigured string array of five items
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

}
故事板中的

TableView是具有searchBar和tableView控制器的视图控制器的子视图。 TableVC具有单个原型单元,其具有通过从单元内部拖动到目标VC而形成的segue(show)。 viewController配置为tableViewDataSource和Delegate,并且还有一个用于tableView childView的IBOutlet。

每行显示正常,tableView按预期显示(cellForRow ..和所有其他方法按预期工作)但是目标视图控制器(标签栏视图控制器的第一个选项卡中的视图控制器)总是到达从底部。

将tabBarVC作为目标VC不是问题,因为即使我使用通用VC作为目标,也会出现同样的问题。

帮我弄清楚为什么我无法通过'Show'呈现。

1 个答案:

答案 0 :(得分:1)

您的ViewController必须位于UINavigationController才能作为推送工作。为此,请使用TableView选择ViewController,然后从顶部的菜单中选择编辑器 - >嵌入 - >导航控制器

如您所知,UITabViewController不是您的问题,您不应该转为UITabBarController。它们旨在成为应用程序的根viewController。合并UINavigationControllerUITabController的正确方法是UITabBarController位于根目录,然后每个标签都有自己的UINavigationController