Я использую пользовательский xib, который содержит несколько кнопок и меток, которые я хочу загрузить в нижний колонтитул UITableView. Однако я получаю сообщение об ошибке, когда он пытается перейти в таблицу в приложении:TableView FooterView не находит зарегистрированный nib
fatal error: unexpectedly found nil while unwrapping an Optional value
TableView имеет 5 других динамических ячеек, которые создаются в:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
я не могу выяснить, что происходит. Я зарегистрировал нижний колонтитул как таковой в viewDidLoad.
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Proxima Nova", size: 17)!]
self.navigationController?.navigationBar.barTintColor = UIColor(red: 79/255, green: 116/255, blue: 136/255, alpha: 1.0)
// create a longPressRecognizer that is used for bringing up the modal to select recipes and marking the meal as eaten
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(MealMapTableViewController.longPress(_:)))
self.view.addGestureRecognizer(longPressRecognizer)
navigationBar.title! = "Meal Map"
// This allows for the side menu to appear from within the app
if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
}
let footerNib = UINib(nibName: "WaterTrackerTableViewCell", bundle: nil)
tableView.registerNib(footerNib, forCellReuseIdentifier: "WaterTrackerTableViewCell")
}
Затем я преодолел методы создания нижних колонтитулов.
// MARK: - Section Footer Methods
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footer = self.tableView.dequeueReusableHeaderFooterViewWithIdentifier("WaterTrackerTableViewCell") as! WaterTrackerTableViewCell
footer.amountLeftLabel.text = "testing"
return footer
}
В WaterTrackerTableViewCell определяется как таковую:
class WaterTrackerTableViewCell: UITableViewHeaderFooterView {
@IBOutlet var bottleButton8Oz: UIButton!
@IBOutlet var bottleButton16Oz: UIButton!
@IBOutlet var bottleButton24Oz: UIButton!
@IBOutlet var bottleButton32Oz: UIButton!
@IBOutlet var amountLeftLabel: UILabel!
@IBOutlet var goalLabel: UILabel!
@IBOutlet var waterProgressBar: UIProgressView!
}
Если я пытаюсь включить этот метод:
override func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 90.0
}
Это происходит сбой приложения, но если исключить этот метод футер не делает появляются. Я попробовал это без моего xib-файла
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, 40))
footerView.backgroundColor = UIColor.blackColor()
return footerView
}
override func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 40.0
}
и что работает.
обновление ошибки: Image of the Error
Update 2: Я установил, что я делал в viewDidLoad из
tableView.registerNib(footerNib, forCellReuseIdentifier: "WaterTrackerTableViewCell")
в
tableView.registerNib(footerNib, forHeaderFooterViewReuseIdentifier: "WaterTrackerTableViewCell")
, но он по-прежнему врезаться прямо сейчас Я получаю еще Ошибка:
2016-10-08 11:08:07.321 Cleanse App[3977:2893987] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle (loaded)' with name 'WaterTrackerTableViewCell''
Update 3:
Xib WaterTrackerTableViewCell and file name
суммаLeftLabel розетка подключена? –
Да, это связано. Я добавил изображение, где он сбой. –
Установили ли вы класс для пользовательского представления? –