任何人都知道为什么这个根View Controller's viewDidLoad在发布时被调用了两次?这让我疯了!
这是第一次到第一次的堆栈跟踪viewDidLoad:
#0 0x0000276a in -[RootViewController viewDidLoad] at RootViewController.m:71
#1 0x3097548f in -[UIViewController view]
#2 0x00002734 in -[RootViewController initWithCoder:] at RootViewController.m:39
#3 0x30ab5ce4 in -[UIClassSwapper initWithCoder:]
#4 0x30514636 in _decodeObjectBinary
#5 0x30514035 in _decodeObject
#6 0x30ab5a1d in -[UIRuntimeConnection initWithCoder:]
#7 0x30514636 in _decodeObjectBinary
#8 0x30515f27 in -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
#9 0x305163b0 in -[NSArray(NSArray) initWithCoder:]
#10 0x30514636 in _decodeObjectBinary
#11 0x30514035 in _decodeObject
#12 0x30ab4dde in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:]
#13 0x30ab6eb3 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:]
#14 0x308f85f1 in …Run Code Online (Sandbox Code Playgroud) 问题原因
当我将新的Swift类文件添加到我的iOS项目中时,我觉得我犹豫不决,将其重命名,删除并创建了一个新文件。我认为我实际上是个优柔寡断的人,因此我将其重命名了几次。
问题
现在,该viewController加载了两次。我实际上可以看到转换发生了两次,并且在测试期间,我可以看到viewDidLoad在控制台中运行了两次。
共同修复
我知道要检查的第一个解决方案是重复的segues / segue调用。检查您的文档大纲,以查看是否有一个以上的序列。就我而言,这绝对不是情节提要或viewController中的问题。
我罕见的情况
我发现有人遇到两次相同的负载问题,这是由于重命名造成的:
他们说,这是我重命名的根本原因,而且修复起来不容易,因为重复项现在位于我的XML文件中。但是,此XML文件在哪里,以及如何编辑它以删除该类的原始实例?我不知道。
那么,我该如何解决两次加载问题?我只希望viewController具有正常的顺序!
在我的应用程序中,我遇到以下错误的问题:
Pushing the same view controller instance more than once is not supported
Run Code Online (Sandbox Code Playgroud)
这是一个来自少数用户的错误报告.我们试图复制它但不能(双击按钮等).这是我们用来打开视图控制器的行:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let editView = storyboard.instantiateViewControllerWithIdentifier("EditViewController") as! EditViewController
editView.passedImage = image
editView.navigationController?.setNavigationBarHidden(false, animated: false)
if !(self.navigationController!.topViewController! is EditViewController) {
self.navigationController?.pushViewController(editView, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
有人有什么想法吗?我已经完成了一些研究,并且我们已经涵盖了Stack上的大多数答案,因此对于如何调查有点不知所措.