2016-10-08 2 views
0

Я использую пользовательский 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

+0

суммаLeftLabel розетка подключена? –

+0

Да, это связано. Я добавил изображение, где он сбой. –

+0

Установили ли вы класс для пользовательского представления? –

ответ

0

я в конечном итоге удаление файла XIb и быстрый файл, воссоздавая его и вставить его в клетку, а не колонтитула, который, казалось, работать. Я сделал файл Xib, прежде чем создавать для него быстрый файл класса, и, возможно, они не были настроены должным образом.