塞维没有立即打电话

时间:2016-02-19 12:03:18

标签: ios swift

我有一个视图控制器A,它有一个用单元格动态创建的表格列表 当调用didselectcell为

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let cell = tableView.cellForRowAtIndexPath(indexPath)
    if(cell?.tag == 1){
    performSegueWithIdentifier("profile", sender: self)
        print("perform segue for favourite")
    }

我打算像这样准备segue并保存变量,该变量在第二个视图控制器中可用

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
     if(segue == "profile"){
     let vc = segue.destinationViewController as! MembersViewController
                    vc.title = " "
  }

当我运行应用程序时,它需要的时间不超过25秒[第二个视图控制器具有collectionview]任何想要更快地完成它的想法

2 个答案:

答案 0 :(得分:0)

我通过调用dispatch_async函数解决了这个问题,它立即移动到下一页,下一页也在viewwillappear中进行了循环,感谢@rakeshbs从这个link获得答案

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

let cell = tableView.cellForRowAtIndexPath(indexPath)
if(cell?.tag == 1){
dispatch_async(dispatch_get_main_queue(), {
            self.performSegueWithIdentifier("profile", sender:self)
        })
}

答案 1 :(得分:0)

这有一些问题。将您的didSelectRow方法更改为此。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if(indexPath.row == 0) {
        performSegueWithIdentifier("profile", sender: nil)
    }
}

您可以修复didSelectRowAtIndexPath方法以删除需要抓取单元格的内容。它已经引用了单元格的索引,这就是你所掌握的。

此外,您的prepareForSegue方法可以改进如下:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "profile") {
        let vc = segue.destinationViewController as? MembersViewController
        vc?.title = "New Title"
    }
}

你永远不需要用这样的东西来调用dispatch_async,特别是在Swift中,除非你已经在后台线程上。

在使用UITableView对象及其UITableViewDelegateUITableViewDataSource组件之前,我建议您在Xcode Playground中查看,并仔细阅读Apple文档以了解一切是如何运作的。< / p>