繁体   English   中英

为什么无法访问子视图的方法?

[英]How come I can't access the methods of my subview?

在我的ViewDidLoad中:

    let spiralDimension = CGFloat(ScreenWidth! * 0.10)
    let spiralName = "spiral.png"
    let spiralImage = UIImage(named: spiralName)

    spiralView = UIImageView(image: spiralImage!)
    spiralView!.frame = CGRect(x: ScreenWidth! / 2 - spiralDimension/2, y: (ScreenHeight!-TabBarHeight!) / 2 - spiralDimension/2 , width: spiralDimension, height: spiralDimension)
    spiralView!.tintColor = UIColor.redColor()
    self.view.addSubview(spiralView!) //works!!!

以后某处...

func fadeBackground(){
    UIView.animateWithDuration(self.fadeTime, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: {
        var randomIndex = Int(arc4random_uniform(UInt32(CONSTANTS.MainColorScheme.count)))

        var subviews = self.view.subviews
        for v in subviews{
            if v.isKindOfClass(UIImageView){
                println(v) //correctly prints my spiral!
                v.tintColor = CONSTANTS.MainColorScheme[randomIndex] //can't do it. XCode won't even auto-complete
            }
        }
    }) { (stuff Bool) -> Void in

    }
}

我无法assign tintColor to v ,即使它可以正确打印我的班级。 无法成功建立。

subviews返回AnyObject数组。 因此,您需要tintColor v才能设置tintColor

尝试:

for v in subviews{
   if let v = v as? UIImageView {
      println(v)
      v.tintColor = CONSTANTS.MainColorScheme[randomIndex]
   }
}

您必须打字。

if v.isKindOfClass(UIImageView){
  let iv = v as! UIImageView
  v.tintColor = ...

问题是,该subviews属性在iOS的定义为类型的变量[AnyObject]如此迅速不知道你的子视图的成员UIView ,它具有属性tintColor

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM