UIButton 在 viewDidLoad() 中始终为零
Posted
技术标签:
【中文标题】UIButton 在 viewDidLoad() 中始终为零【英文标题】:UIButton is always nil in viewDidLoad() 【发布时间】:2015-08-20 09:03:11 【问题描述】:我在 Storyboard 中的 ViewController 中添加了一个 UIButton。然后我为它创建了一个 IBOutlet 连接。然后在 viewDidLoad() 中,我想使用创建的按钮进行操作,但它始终为零。
class LeftWeekViewController: UIViewController
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var weekNumberBtn: PassThroughButton!
@IBOutlet weak var weekNumberBtnBottomSpacing: NSLayoutConstraint!
@IBOutlet weak var plusBtn: UIButton!
var data: [String] = ["sadasd", "adgfdgfdg", "hgfhgfhgfh", "sadasd", "adgfdgfdg", "hgfhgfhgfh", "sadasd", "adgfdgfdg", "hgfhgfhgfh"]
var sections: [String] = ["[Ma 26 Mei]", "[Di 27 Mei]", "[Wo 28 Mei]"]
override func viewDidLoad()
super.viewDidLoad()
let calender = NSCalendar.currentCalendar()
let dateComponent = calender.components(.CalendarUnitWeekOfYear | .CalendarUnitDay | .CalendarUnitMonth | .CalendarUnitYear, fromDate:NSDate())
weekNumberBtn.setTitle("\(dateComponent.weekOfYear)", forState: UIControlState.Normal)
weekNumberBtn.layer.cornerRadius = weekNumberBtn.frame.height / 2
weekNumberBtn.clipsToBounds = true
self.view.bringSubviewToFront(weekNumberBtn)
self.tableView.separatorStyle = .None
weekNumberBtnBottomSpacing.constant = -1 * (self.tableView(self.tableView, heightForHeaderInSection: 0) - 8)
tableView.registerNib(UINib(nibName: "LeftWeekTableViewCell", bundle: nil), forCellReuseIdentifier: "LeftWeekCell")
var pencilImage = UIImage(named: "pencil")!
pencilImage = resizeImage(pencilImage, size: CGSize(width: plusBtn.frame.width - 15, height: plusBtn.frame.height - 15))
plusBtn.layer.cornerRadius = plusBtn.frame.size.height / 2
plusBtn.clipsToBounds = true
plusBtn.setImage(pencilImage, forState: .Normal)
plusBtn.contentMode = UIViewContentMode.Center
plusBtn.layer.shadowColor = UIColor.blackColor().CGColor
plusBtn.layer.masksToBounds = false
plusBtn.layer.shadowOffset = CGSizeMake(0, 15)
plusBtn.layer.shadowRadius = 10
plusBtn.layer.shadowOpacity = 0.4
self.view.bringSubviewToFront(plusBtn)
//...
我以同样方式创建的第一个 weekNumberBtn 不是 nil,但第二个 'plusBtn' 始终是 nil。我不知道出了什么问题。有人可以帮我吗?
更新::
我已经清理并重建了我的项目,但它抛出了一个错误,我在创建 ViewController 时传递了错误的 xib 文件名。我已更改 xib 文件名,一切正常。
【问题讨论】:
你检查连接了吗? @anhtu 是的,这里是it is。 尝试产品->清理并重建项目 尝试重新连接,然后重建。 有时,Xcode 不会更新 xib 中的更改。我不知道为什么。也许需要创建另一个问题。 【参考方案1】:选择按钮并右键单击它,查看是否存在预先设置的网点。如果连接不可用,则将插座提供给 tha 按钮。即使它不起作用删除现有的网点并再次创建网点。放置断点并调试它
【讨论】:
改变按钮弱属性 只是删除“弱”或添加一些东西?我尝试删除,出现相同的结果。 @IBOutlet var plusButton: UIButton! 删除以前的outlet 创建新的outlet 选择强属性 所有outlet必须有weak属性,不要选strong以上是关于UIButton 在 viewDidLoad() 中始终为零的主要内容,如果未能解决你的问题,请参考以下文章
UITableView endUpdates 在 viewDidLoad 中调用时崩溃
核心数据 - 在 viewDidLoad 之前调用数据源方法
情节提要 xib 在 viewDidLoad 后“卡住”
UIScrollView 在 viewDidLoad 中调用 setContentSize 后没有更新,但从按钮调用时会更新