Pao*_*ini 15 uiviewcontroller ios segue uistoryboardsegue swift
在我的应用程序的主视图中,我有一个表视图和两个原型单元格.我使用故事板为每个单元配置了segue.在视图控制器中,我覆盖prepareForSegue以将所选单元格上的信息传递到目标视图.
目标视图不是特别复杂,当然也不需要任何繁重的处理来加载.
问题
当我第一次点击主控制器中的单元格时,目标视图会在长时间延迟后显示,从5到40秒.
编辑#2:后续的点击通常更快
注意:
一些println显示以下事件序列发生:
根据我在这个主题上的内容,我怀疑这个问题可能与后台线程中发生的一些上述操作有关.
知道我可能做错了什么吗?
编辑#1:添加了一些代码
在主视图控制器中,segue已使用故事板链接(CTRL-将两个原型单元拖动到目标视图中).
代码看起来有点像下面:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
var assetIndex = assetsTable.indexPathForSelectedRow()?.row
println("prepare for segue - start: \(assets[assetIds[assetIndex!]]!.Name)")
if let destination = segue.destinationViewController as? AssetThingsListViewController
{
destination.bundlesRepository = bundlesRepository!
destination.asset = assets[assetIds[assetIndex!]]
}
println("prepare for segue - end")
}
Run Code Online (Sandbox Code Playgroud)
编辑#3我在BitBucket上提供了一个示例项目
pte*_*fil 15
我检查了你的项目.虽然我也找不到任何其他东西,但我也怀疑它是线程问题.
我设法通过实现代理tableview并在代码中呈现新控制器来解决问题:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let destination = storyboard?.instantiateViewControllerWithIdentifier("BuilderToysListViewController") as! BuilderToysListViewController
destination.botsRepository = botsRepository!
destination.builder = builders[builderIds[indexPath.row]]
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.presentViewController(destination, animated: true) { () -> Void in
}
})
}
Run Code Online (Sandbox Code Playgroud)
请注意,您已设置视图控制器故事板ID:BuilderToysListViewController并设置tableview委托.不要忘记删除segues.
最后在新视图控制器中解散视图使用此代码:
@IBAction func backButton(sender: AnyObject)
{
dismissViewControllerAnimated(true, completion: { () -> Void in
})
// performSegueWithIdentifier("segueToysByBuilder", sender: nil)
}
Run Code Online (Sandbox Code Playgroud)
这将允许您正确关闭视图,而不是错误地创建一个新视图.
| 归档时间: |
|
| 查看次数: |
4630 次 |
| 最近记录: |