为啥我的 UITableView 不执行 show segue,只显示模态

Posted

技术标签:

【中文标题】为啥我的 UITableView 不执行 show segue,只显示模态【英文标题】:Why does my UITableView not perform show segue, only presents modally为什么我的 UITableView 不执行 show segue,只显示模态 【发布时间】:2015-05-24 09:19:33 【问题描述】:

大家好,我的应用程序一直存在问题,来自 UITableView 的所有 segues 仅以“当前模式”(从底部向上)而不是显示(从右侧显示)呈现

相关的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(显示)。 viewController 被配置为 tableViewDataSource 和 Delegate 并且还有一个用于 tableView childView 的 IBOutlet。

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

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

帮我弄清楚为什么我无法通过“显示”进行演示。

【问题讨论】:

【参考方案1】:

您的 ViewController 必须在 UINavigationController 中才能作为推送工作。为此,请使用 TableView 选择您的 ViewController,然后从顶部的菜单中选择 Editor->Embed In->Navigation Controller

正如您所说,UITabViewController 不是您的问题,您不应该继续使用 UITabBarController。它们旨在成为应用程序的根 viewController。组合UINavigationControllers 和UITabControllers 的正确方法是将UITabBarController 放在根目录,然后每个选项卡都有自己的UINavigationController

【讨论】:

非常感谢,我知道这会很简单。我也没有要升级的排骨,但同样感谢。此外,既然我已经嵌入了 VC,我得到了一个“双重搜索”,但最终还是在同一个 VC,知道为什么吗? 描述双重转场是什么样子的。 我已经对其进行了排序,它是到目标 VC 的一个转场,紧接着是另一个从目标 VC 到它自己的转场(相同的目标 VC),两者都作为 show segues。发生的情况是,用于触发 segue 的按钮仍然具有 performSegueWithIdentifier 方法作为其 IBAction,但是将 segue 直接从其 UIButton 图标拖到目标 vc,因此当按下它时,它执行了 segue,然后调用了“performSegueWithIdentifier” ..

以上是关于为啥我的 UITableView 不执行 show segue,只显示模态的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的子类 UItableView 不滚动?

我的 UITableView 不会向下滚动到数据的末尾!为啥?

为啥我的 UITableView 在 iOS 7 中被切断了?

为啥 UITableView 是空的?

为啥我的 plist 不会填充我的 UITableView?

为啥我的单元格在我的 UITableView 中显示为空白?