Ios 如何在Swift中创建类级别的UIImageView数组?

Ios 如何在Swift中创建类级别的UIImageView数组?,ios,arrays,swift,uiimageview,Ios,Arrays,Swift,Uiimageview,当我尝试创建一个UIImageView声明为@iAction的数组时,我收到“无法在属性初始值设定项中使用实例成员,属性初始值设定项在self可用之前运行”编译器错误。我如何解决这个问题 您将ImageView声明为常量(另一个问题),然后在viewDidLoad中再次声明。您不需要重新声明它(或者只需在viewDidLoad中声明一次)您将ImageView声明为常量(另一个问题),然后在viewDidLoad中再次声明它。您不需要重新声明它(或者只需在viewDidLoad中声明一次)正如错

当我尝试创建一个UIImageView声明为
@iAction
的数组时,我收到“无法在属性初始值设定项中使用实例成员,属性初始值设定项在self可用之前运行”编译器错误。我如何解决这个问题


您将ImageView声明为常量(另一个问题),然后在viewDidLoad中再次声明。您不需要重新声明它(或者只需在viewDidLoad中声明一次)

您将ImageView声明为常量(另一个问题),然后在viewDidLoad中再次声明它。您不需要重新声明它(或者只需在viewDidLoad中声明一次)

正如错误所解释的,在类级别的方法外部初始化属性时,您不能使用实例成员。将数组初始值设定项保留在类级别,并将属性添加到方法中

var imageViews = [UIImageView]()

override func viewDidLoad(){
    imageViews = [pos_1,pos2]

    //or
    imageViews.append(pos_1)
    imageViews.append(pos_2)
 }

正如错误所解释的,在类级别的方法外部初始化属性时,不能使用实例成员。将数组初始值设定项保留在类级别,并将属性添加到方法中

var imageViews = [UIImageView]()

override func viewDidLoad(){
    imageViews = [pos_1,pos2]

    //or
    imageViews.append(pos_1)
    imageViews.append(pos_2)
 }

它当前在viewDidLoad中工作。我想把它从viewDidLoad中去掉,这样它就可以在两个不同的方法中使用(其中一个是viewDidLoad)。然后在viewDidLoad中,直接转到您的For/in循环(即,删除那里的重新声明)。我想投票表决这个答案,因为它确实是正确的。对于一个好的答案,唯一缺少的是为什么,根据OP的评论,真正的问题是什么——可变范围。加上这个,这就解决了问题。谢谢你的意见,但这不是解决办法。请看我在原帖中修改的图片。即使没有多个声明并将其从常量更改为变量,也会发生相同的错误。似乎您已在其他位置初始化了pos1_1和数组中的其他变量。现在您正试图将此数组中的这些实例分配给ImageView。Try:它当前在viewDidLoad中工作。我想把它从viewDidLoad中去掉,这样它就可以在两个不同的方法中使用(其中一个是viewDidLoad)。然后在viewDidLoad中,直接转到您的For/in循环(即,删除那里的重新声明)。我想投票表决这个答案,因为它确实是正确的。对于一个好的答案,唯一缺少的是为什么,根据OP的评论,真正的问题是什么——可变范围。加上这个,这就解决了问题。谢谢你的意见,但这不是解决办法。请看我在原帖中修改的图片。即使没有多个声明并将其从常量更改为变量,也会发生相同的错误。似乎您已在其他位置初始化了pos1_1和数组中的其他变量。现在您正试图将此数组中的这些实例分配给ImageView。尝试: