所以我超越了init(frame)
来做一堆事情:
class InputField: UIView {
override init(frame: CGRect) {
super.init(frame: frame);
let label = UILabel(frame: CGRect(x: 8, y: 8, width: 73, height: 30));
label.text = "I want";
label.font = UIFont(name: "Avenir-Book", size: 26.0);
addSubview(label);
NSLayoutConstraint(item: label, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leadingMargin, multiplier: 1.0, constant: 8.0).isActive = true;
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder);
}
}
问题是第二个init()
被称为第一个UIView
。我在故事板中设置的方式是使用一个简单的空InputField
,其类为init(coder)
。为什么它使用第二个而不是第一个?
我不想以编程方式创建InputField,因为我更愿意看到我在故事板中设置的视图。我知道如果我被困住了,但我主要想学习如何这样做。
编辑,如评论中所述,当前的解决方法是在init(frame)
中执行该配置代码。但这仍然没有回答:为什么要被召唤而不是if(spin($color)){
$wonlast = true;
$moneypot += $current_bet;
$result_text .= "Winner!<br/>";
}else{
$result_text.= "Loser<br/>";
$wonlast = false;
$moneypot -= $current_bet;
}
if(($result = mysqli_query($con, "UPDATE store_players SET `credits` = $moneypot WHERE `id` = 1") !== null){
echo 'success';
} else {
die(mysqli_error($con));
}
?
答案 0 :(得分:1)
有不同的便捷方法来帮助初始化视图。当视图实际初始化时,将调用许多方法( -frame,-coder等)中的一个。
如果您需要执行任何自定义初始化,可以使用common init
方法。