prepareForSegue不使用导航控制器

时间:2016-11-21 23:16:48

标签: ios swift

我有一个带有活动指示器的View Controller,可以从我的数据库中获取数据。获取所有数据后,此视图将执行SegueWithIdentifier并使用prepareForSegue将数据传递给TableViewController。我遇到的问题是,如果我在获取数据的视图和获取数据的TableViewController之间添加导航控制器prepareForSegue不起作用,我在TableViewController上看不到数据。但是,如果我删除导航控制器,我得到的数据就好了。下面是我的prepareForSegue方法。我在那里嵌入了一个导航控制器,以便通过这个segue获得我想要的过渡效果,这应该让TableViewController从左侧滑入并带有push segue。感谢

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "serviceView" {
        if let destination = segue.destinationViewController as? ServiceTableViewController {
            destination.firstName = self.firstName
            destination.lastName = self.lastName
            destination.email = self.email
            destination.streetAddress = self.streetAddress
            destination.aptOrSuite = self.aptOrSuite
            destination.state = self.state
            destination.city = self.city
            destination.zipcode = self.zipcode
            destination.phone = self.phone
        }
    }
}

2 个答案:

答案 0 :(得分:0)

嵌入视图控制器,用于获取导航控制器中的数据,而不是表视图控制器,因此两个视图控制器都位于导航控制器的视图控制器堆栈中

答案 1 :(得分:0)

首先你需要访问NavigationController,然后是topViewController,将topViewController转换为你的目标NavigationController

let destinationNavigationController = segue.destination as! UINavigationController
let targetController = destinationNavigationController.topViewController as! serviceView 
targetController.firstName = self.firstName