【问题标题】: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 作为目标也会出现同样的问题。

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

【问题讨论】:

    标签: ios uitableview swift segue


    【解决方案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” ..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多