我想上下动画我的按钮。当我使用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
})
}
}
答案 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
希望这有帮助。