使用Swift中的导航控制器在View Controller中缺少后退按钮

时间:2015-07-30 23:09:23

标签: ios swift uinavigationcontroller

根据我在这个论坛上的研究,我已经了解了导航控制器的工作原理。让我们将导航控制器设置为firstView(表视图)作为根视图控制器。 firstView中有一个按钮,可以将我带到secondView(视图控制器)。当然,如果我通过Push segue将firstView连接到secondView,则secondView中应该有一个后退按钮。但是我的第二个视图中没有出现任何内容。

这是我在firstView中的代码:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let sb = UIStoryboard(name: "Main", bundle: nil)
    let messagesVC = sb.instantiateViewControllerWithIdentifier("MessagesViewController") as! MessagesViewController        

    //Just querying, not important to my question
    roomQuery.findObjectsInBackgroundWithBlock { (results: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {
            //Push the message onto the navigation controller

            //This will have a back button but the functionality of secondView breaks (for some weird reason?????)
            self.navigationController?.pushViewController(messagesVC, animated: true)

            //This will have no back button, but has functionalities that I had intended it to have 
            self.navigationController?.presentViewController(messagesVC, animated: true, completion: nil)
    }
}

所以不应该在firstView和secondView之间建立连接,在secondView中使用后退按钮吗?我目前正在使用presentViewController(),所以我需要的只是一个该死的后退按钮。

我还尝试在secondView和bar按钮项目中创建导航栏,但它也没有出现。能有人帮助我这件事真是太棒了。

1 个答案:

答案 0 :(得分:3)

您在后台线程而不是主线程中进行UI工作。在这个网站和其他地方,有太多的讨论无法计算。寻找模式:

<head>
<meta charset="utf-8">
<title>title</title>
<!-- font-weight: normal; to be used in stylesheet maybe -->
<style>
    h1 {  
        text-align: center;
    }
</style>
</head>

特别是

dispatch_async(dispatch_get_main_queue()) {
    // update some UI
}

如果您想要真正的见解,请从http://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1

等教程开始