Ios 为什么会出现此错误:致命错误-数组索引超出范围?
我有两个视图控制器:一个Ios 为什么会出现此错误:致命错误-数组索引超出范围?,ios,arrays,swift,for-loop,imageview,Ios,Arrays,Swift,For Loop,Imageview,我有两个视图控制器:一个cameraVC和一个detailVC。该相机是一款AVFoundation相机,可以捕获并选择图片,然后在mydetailVC上填充4个小型imageview。我正在尝试在两个VCs之间滑动,这样当您在cameraVC上点击'yes'时,就会将其添加到4个图像视图中的一个。我目前正在使用for循环来实现这一点,下面是我在我的详细VCs中的代码 当我第一次加载应用程序并拍摄几张照片时,它可以工作,但当我刷回我的cameraVC,然后再刷回我的detailVC,应用程序崩溃
cameraVC
和一个detailVC
。该相机是一款AVFoundation
相机,可以捕获并选择图片,然后在mydetailVC
上填充4个小型imageview
。我正在尝试在两个VCs之间滑动,这样当您在cameraVC
上点击'yes'时,就会将其添加到4个图像视图中的一个。我目前正在使用for循环来实现这一点,下面是我在我的详细VCs中的代码
当我第一次加载应用程序并拍摄几张照片时,它可以工作,但当我刷回我的cameraVC
,然后再刷回我的detailVC
,应用程序崩溃并记录上面的错误
在我的代码中,我试图将imageViewArray
设置为我的imageArray
中有多少图像。然后每次我回到detailVC
,我都要清除我的imageView.images
并重新分配它们。由于某种原因,它不起作用。你知道为什么吗
override func viewWillAppear(animated: Bool) {
if imageArray.count == 1 {
imageViewArray += [imageView1]
} else if imageArray.count == 2 {
imageViewArray += [imageView1,imageView2]
} else if imageArray.count == 3 {
imageViewArray += [imageView1,imageView2,imageView3]
} else if imageArray.count == 4 {
imageViewArray += [imageView1,imageView2,imageView3,imageView4]
}
for ima in imageViewArray {
if ima.image != nil {
ima.image = nil
}
}
for (index, imageView) in imageViewArray.enumerate() {
imageView.image = imageArray[index]
}
}
添加行
imageViewArray = []
在视图的开头将出现
或者将所有4个分支中对imageViewArray
的赋值更改为类似以下内容:
imageViewArray = [imageView1,imageView2,imageView3,imageView4] // removed the "+"
您在这里遇到的问题是,当视图第一次呈现时,以及当某个呈现的视图再次被取消/弹出导致视图再次出现时,会调用该方法
这样做的结果是,imageViewArray
仍然包含上一次迭代的ImageView。再次添加图像会导致阵列变大
假设您第一次有3个图像,现在第二次有4个图像。因此,您进入最后一个else部分,向数组添加4个新元素,使其具有7个元素,而imageArray仍然只有4个元素。现在,您迭代所有imageViewArray
条目,并尝试访问索引6处的imageArray
,而该数组仅包含值,直到索引3->崩溃
请注意,写这个答案很烦人,因为您有太多的变量,所有这些变量的声音和外观都相同imageView
,image
,imageArray
,imageViewArray
,imageViewX
。请尝试找到更好的名称。为了可读性,我建议在您的For
语句中,在imageViewArray中使用而不是ima
。这将使你的代码在6个月内更容易理解,当你重新使用它时,或者如果其他人试图跟随它。你是一个非常聪明的家伙,非常感谢你的帮助。