Swift:.frame的预期声明错误

时间:2014-08-15 18:18:54

标签: swift

嘿伙计们我正在使用xcode6 beta 4。

我试图给一个带有参数.frame的大小的按钮,但是我得到了一个预期的声明错误。我希望你能告诉我我的代码有什么问题以及为什么我会收到这个错误!

 var button1   = UIButton.buttonWithType(UIButtonType.System) as UIButton
 button1.frame = CGRectMake(100, 100, 40, 145) //Expected declaration
 button1.addTarget(self, action: "Action:", forControlEvents:UIControlEvents.TouchUpInside)
 menuView.addSubview(button)

1 个答案:

答案 0 :(得分:4)

您可能会误认为哪一行引发了错误。

请看你所分享的第4行。

menuView.addSubview(button)

不应该是button1,而不是button

menuView.addSubview(button1)

修改

正如我的评论中所提到的,您可能正在尝试访问类声明中的button1声明,所有逻辑都必须在函数内。只有变量声明才能在函数之外。

class Foo {

    var menuView = UIView()
    var button1: UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButton

    button1.frame = CGRectMake(100, 100, 40, 145)
    button1.addTarget(self, action: "Action:", forControlEvents:UIControlEvents.TouchUpInside)
    menuView.addSubview(button1)
}

上述情况不正常,你可以在班级宣布button1变量,但在你进入下面这样的函数之前,你无法开始访问它。

class Foo {

    var menuView = UIView()
    var button1: UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButton

    func setupButton1() {
        button1.frame = CGRectMake(100, 100, 40, 145)
        button1.addTarget(self, action: "Action:", forControlEvents:UIControlEvents.TouchUpInside)
        menuView.addSubview(button1)
    }

}