2014-08-02 4 views
0
let cell = tableView!.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as MessageTableViewCell 
let cell2 = tableView!.dequeueReusableCellWithIdentifier("Cell2", forIndexPath: indexPath) as MessageTableViewCell 

Первая ячейка признана прекрасной. Во-вторых, нет. У меня есть раскадровка с соответствующими идентификаторами, установленными для каждой ячейки прототипа. У (динамического) tableView есть обе ячейки на нем, что должно быть хорошо из того, что я понимаю. Это точная ошибка я получаю:XCode 6 не распознает вторую таблицуViewCell

* Нагрузочное приложение из-за неперехваченное исключением «NSInternalInconsistencyException», причину: «не удались из очереди ячейки с идентификатором CELL2 - необходимо зарегистрировать перо или класс для идентификатор или соединить ячейки прототип в раскадровке

Это сделало бы смысл, если идентификатор для этого второго прототипа ячейки не было «CELL2», однако это.

Вот код в целой функции, обратите внимание, как я даже не возвращает ячейку 2, просто его извлечение из:

override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? { 
    let cell = tableView!.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as MessageTableViewCell 
    let cell2 = tableView!.dequeueReusableCellWithIdentifier("Cell2", forIndexPath: indexPath) as MessageTableViewCell 

if UIApplication.sharedApplication().statusBarOrientation.isLandscape == true { 
    cell.messageLabel.preferredMaxLayoutWidth = cell.frame.size.width - 80 
} else { 
    cell.messageLabel.preferredMaxLayoutWidth = cell.frame.size.width - 35 
} 

preferredWidth = cell.messageLabel.preferredMaxLayoutWidth 

cell.messageLabel.text = friends[indexPath!.row] 
cell.messageLabel.sizeToFit() 
cell.messageLabel.setNeedsDisplay() 

return cell 
} 

Он врезается на этой второй линии (внутри функции).

Примечание: Я теперь с помощью Xcode 6 Beta 4.

+1

Всегда используйте последние бета, который, как сейчас Beta 4. – HAS

+0

я замечаю такое же поведение, после внесения изменений в код, показавший Beta 4. – user3871275

+1

Этот вопрос выглядит не по теме, потому что вы используете устаревшую бета-версию, которая, как вы предполагаете, имеет меньше ошибок, чем ваша текущая версия. – Mark

ответ

0

Я создал новый наконечник, воссоздана ячейку там, и вставить этот код, который все в сочетании решить эту проблему.

var nibName = UINib(nibName: "MainTableViewCell", bundle:nil) 
self.tableView.registerNib(nibName, forCellReuseIdentifier: "SecondCell") 
1

Я испытал это, как хорошо. Попробуйте это:

tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell") 
+0

Я поместил это в свою функциюDidLoad() func для «Cell2». В результате я получаю нечетное сообщение «EXC_BREAKPOINT» для Thread 1, его не в консоли, это указывает на местоположение памяти. «Swift_dynamicCast» находится в заголовке. – user3871275

+0

'let cell2 = tableView! .dequeueReusableCellWithIdentifier (« Cell2 », forIndexPath: indexPath), поскольку MessageTableViewCell' по-прежнему является линией, которая заставляет это произойти, когда удаленное выполнение программы происходит нормально. +1 для предложения, все еще не работает. – user3871275

+0

@ user3871275 Убедитесь, что эта строка помещена после выделения представления таблицы. Кроме того, измените 'dequeueReusableCellWithIdentifier (« Cell2' на 'dequeueReusableCellWithIdentifier (« Cell »(обратите внимание на № 2, чтобы соответствовать строке моего ответа) –

Смежные вопросы