Bool Value在Swift中不起作用

时间:2015-08-11 12:41:18

标签: ios swift

我想上下动画我的按钮。当我使用Objective-C时它可以工作,但是,当我使用Swift时,bool值显示为nil而不是false或true。我是Swift的新手。请帮忙。

class ViewController: UIViewController,ABPeoplePickerNavigationControllerDelegate {
    @IBOutlet var dd:UIButton!
    var isShown:Bool?
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
@IBAction func touch()
{
println(self.isShown)
    if (self.isShown==false)
    {
    UIView.animateWithDuration(0.5, animations: { () -> Void in
        self.dd.frame=CGRectMake(35.0, 60, self.dd.frame.size.width, self.dd.frame.size.height)
       self.isShown=true
    })
    }
        else
        {
            UIView.animateWithDuration(0.5, animations: { () -> Void in
                self.dd.frame=CGRectMake(55.0, 130, self.dd.frame.size.width, self.dd.frame.size.height)
                self.isShown=false
            })
        }

    }

4 个答案:

答案 0 :(得分:4)

您写道:

var isShown:Bool?

由于上述声明,isShown变量是可选的Bool,因为?后面有Bool。这意味着您的isShown媒体资源可能为nil,也可能有值。

但是,在您的代码中, isShown属性未初始化为任何值。认识到Swift不像其他语言那样将Bool默认为false。因此,您必须明确设置isShown属性的值,以避免它为零。

例如,您可以执行以下操作以在声明属性时初始化您的属性:

class ViewController: UIViewController,ABPeoplePickerNavigationControllerDelegate {
    @IBOutlet var dd:UIButton!
    var isShown:Bool = false
    ...
}

您也可以通过其他方式处理初始化(例如,通过在viewDidLoad函数中指定值)。

了解Swift Optionals,因为目标C中不存在该概念,它将帮助您了解如何处理您的财产。

答案 1 :(得分:0)

在viewDidLoad中初始化bool变量

isShown = true

答案 2 :(得分:0)

在使用之前,您没有设置bool值设置bool值。

答案 3 :(得分:0)

您应该直接初始化值为false的bool。

像这样: -

var isShown : Bool = false

希望这有帮助。