2017-02-19 50 views
0

Я создаю таблицу, и с помощью этого кода, чтобы генерировать клетки:таблица вид ячейки пользовательского класса возвращающей ноль

let cell2:iPRoutineSpecificCell = self.routineSpecificsTable.dequeueReusableCell(withIdentifier: "Cell2") as! iPRoutineSpecificCell 

Ячейка содержит метку. Когда я говорю

cell2.label.text = "Test" 
return cell2 

Я получаю ошибку:

fatal error: unexpectedly found nil while unwrapping an Optional value

У меня есть это точное расположение в другом месте в приложении, и это работает отлично. Почему это не работает в этот раз? Единственное различие между двумя представлениями состоит в том, что он содержит две таблицы. Однако, если я использую:

cell2.textLabel?.text = "Test" 

Тогда это работает.

Любая помощь оценена!

+0

вы можете показать определить 'iPRoutineSpecificCell'? –

+1

Вам нужно соединить ярлык с iPRoutineSpecificCell – DiegoQ

+0

@DiegoQ. Я подключил ярлык (я думаю) - вы имеете в виду Alt + перетащить и подключиться как выход к файлу? – ZiEiTiA

ответ

3

Пожалуйста, удалите эту строку из метода viewDidLoad если вы have-:

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

textLabel - родное поле UITableViewCell. Он определен как необязательный, и поэтому он не будет терпеть крах, когда текст, который вы установили, равен нулю.

Пользовательская метка, которую вы устанавливаете, вероятно, определена как необязательная метка (возможно, IBOutlet). Убедитесь, что вы правильно соедините этикетку с раскадрой, перетащив этикетку на правильную розетку.

+0

В коде, который работает (со столом и пользовательской ячейкой), эти метки определяются как IBOutlets. Код, который работает, и код, который не совпадает, не совпадает с тем, что тот, который не работает, содержит 2 таблицы. Ярлыки, которые я не могу использовать, также определены как IBOutlets – ZiEiTiA

+0

Вы управляете двумя таблицами в одном и том же коде? 1. Убедитесь, что обе таблицы подключены. 2. Проверьте внутри методов tableView делегатов (и datasource), которые вы работаете с правильной таблицей, которая соответствующим образом определила пользовательскую ячейку. – Lirik

+0

Я знаю, что это относится к правильной таблице, так как встроенный textLabel.text работает нормально. Я нажал на ячейку в таблице и установил свой класс в пользовательский класс, который я использую для ячеек - вот что мне нужно сделать? – ZiEiTiA

0

Вы должны зарегистрировать свой собственный соту:

tableView.registerNib(UINib(nibName: "Your Nib Name", bundle: nil), forCellWithReuseIdentifier: "Your Cell Identifier") 
+0

Вам не нужно, если вы используете раскадровку. – vadian