【发布时间】:2015-10-07 08:24:27
【问题描述】:
我正在尝试做的事情:
以下代码用于页面上的 2 个按钮。此页面是页面数组的一部分(存储在 self.parent 中;它还将其在该数组中的索引存储在 self.index 中)。 这 2 个按钮用于在这组页面中向前和向后导航。如果它试图前进但到达数组的末尾,它应该回到第一页;同样返回并击中数组的开头。
@IBAction func previousButton(sender: AnyObject) {
self.prev()
}
@IBAction func nextButton(sender: AnyObject) {
self.next()
}
func next(){
if let _parent = self.parent{
if self.index != _parent.getSize()-1 {
self.view.addSubview(_parent[self.index+1].view)
}
else{
self.view.addSubview(_parent[0].view)
}
}
else{
println("This Page is not part of a List")
}
}
func prev(){
if let _parent = self.parent{
if self.index != 0 {
self.view.addSubview(_parent[self.index-1].view)
}
else{
self.view.addSubview(_parent[_parent.getSize()-1].view)
}
}
else{
println("This Page is not part of a List")
}
}
问题是:
编辑: 崩溃与 if 语句无关,也不是随机的;当我第十次点击下一个按钮时它崩溃了,第十次点击上一个按钮(十是我列表中的页面数;如果我添加更多页面,这个数字会相应改变),当我按下一个后按上一个或按下一个后按下一个。
我发现了问题:我没有在页面之间正确切换,我只是在其他页面之上添加一个;当我尝试显示一个已经加载的页面(并且仍然位于页面堆栈下方的某个位置)时,会发生崩溃。
现在我需要找到一种更好的方式在它们之间切换。
【问题讨论】:
-
请显示错误堆栈。
-
这就是它给我的所有信息,同时以绿色突出显示有问题的行:Thread 1: EXC_BAD_ACCESS (code=2, address=0x7fff59d8dff8) 控制台是空的。
-
错误发生在哪一行?
-
我已经在 cmets 中指定了它给我错误的行。代码构建良好并运行;它只在某些情况下崩溃(正如我上面所说的)
-
尝试将
index变量存入每个方法中的局部变量中,并在结束前更新。