iOS 8 - performSegueWithIdentifier 加载 View 但直到我点击屏幕才显示

标签 ios iphone xcode swift

我有一个选项卡栏应用程序,其中一个包含表格 View 的选项卡在按下表格单元格时转入第三个 View 。 View Controller 充当 UITableView 的委托(delegate),我按如下方式以编程方式触发 segue:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    println("cell tapped, starting segue")
    performSegueWithIdentifier("showDetails", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    println("prep for segue")
    // TODO - more code here
}

最后,我设置了以下代码来调试第三个 View 的问题:

class DetailsViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        println("did load")
    }
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        println("will appear")
    }
}

问题是,当我第一次按下表格单元格时,viewWillAppear 函数永远不会被调用,直到我以某种方式与 UI 交互(例如,只是点按屏幕上的任意位置)。我想进入的 View 没有显示,就好像屏幕没有刷新一样。但是,当我点击屏幕时,整个动画都会运行,我可以按预期继续。这是我点击一个单元格时的输出:

cell tapped, starting segue
prep for segue
did load

我试图在网上寻找解决方案,但我发现的所有问题似乎根本不起作用。就我而言,它正在起作用,但不是立即起作用。

如果有帮助,这是我的 Storyboard的屏幕截图:

Screenshot of my Storyboard

最佳答案

Sefu 找到了答案并将其发布在评论中,我遇到了同样的问题,他的解决方案对我有效。诀窍是让它被选中触发 segue 的单元格需要设置选择样式(而不是无),而且我还发现取消选择 tableView:didSelectRowAtIndexPath: 中的单元格也需要发生。

关于iOS 8 - performSegueWithIdentifier 加载 View 但直到我点击屏幕才显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726516/

相关文章:

ios - 输入字符串的验证是否为日期?

ios - 在 iOS 中,如果固定的 SSL 证书过期,我是否需要重新提交应用程序?

ios - 核心数据 Perform() performAndWait() 100% 不确定

ios - 是否可以通过编程方式提高 iphone 中相机的快门速度?

iphone - 将核心数据中的元素添加到字典中,然后添加到 nsmutablearray?

ios - UIView 渐变颜色在 UICollectionView 中未正确渲染

iphone - 在一个上下文中保留项目,但核心数据无法在另一上下文中找到项目?

ios - swift2 核心数据和关系处理

iphone - 以编程方式修改 UIToolBar 项目

ios - 在设备控制台中查看 os_log 消息