У меня возникли проблемы с сбоем, возникающим при изменении контроллеров представления. В принципе у меня есть VC, который берет данные от пользователя для поиска - он затем выводит новый VC с поиском результаты, отображаются в UITableView (не используя UITableViewController
, просто TableView внутри обычного UIViewController
)Ошибка UITableView, несмотря на то, что cellForRowAtIndexPath возвращает действительную ячейку
Краш Вход:
2016-08-29 20: 48: 03.950 MyApp [2596 : 60877] *** Ошибка подтверждения в - [SearchResultsTable _confi gureCellForDisplay: forIndexPath:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.60.7/UITableView.m:7971
2016-08-29 20: 48: 03,961 MyApp [ 2596: 60877] Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «UITableView (; layer =; contentOffset: {0, 0}; contentSize: {375, 1128}>) не удалось получить ячейку из своего dataSource (; layer =; contentOffset: {0, 0}; contentSize: {0, 0}>) ' *** Первый стек вызовов броска:
Я прочитал, что эта проблема вызвана не возвращая клетки в вашей cellForRowAtIndexPath
функции, однако я уверен, что моя реализация будет возвращать ячейку успешно. (Я тестировал код функции где-то еще, и cell
это на самом деле имеет значение, а не ноль.)
Код:
@property searchResultCell * cell;
-(UITableViewCell*)cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
_cell = [self dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
if (_cell == nil)
{
_cell = [[searchResultCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
[[_cell txtDate] setText:@"test"];
return _cell;
}
Разместив несколько контрольных точек что этот раздел кода никогда не выполняется, несмотря на то, что класс UITableView
, делегат и источник данных правильно установлены.
viewDidLoad для результатов поиска VC ([self SpecifiedSerial]
установлено ранее, прежде чем переходить происходит Это NSString*
.):
- (void)viewDidLoad
{
[super viewDidLoad];
_SearchResultsTableDelegate = [[searchResultsTable alloc] init:[self specifiedSerial]];
[[self SearchResultsTable] setDelegate:_SearchResultsTableDelegate];
[[self SearchResultsTable] setDataSource:_SearchResultsTableDelegate];
}
Объявления:
@property (weak, nonatomic) IBOutlet UITableView *SearchResultsTable;
@property searchResultsTable * SearchResultsTableDelegate;
Если кто-то может мне точку в правильном направление здесь, было бы очень признательно!
Можете ли вы показать, где и когда вы это называете? –
Попробуйте этот UITableViewCell * _cell = [yourTableView dequeueReusableCellWithIdentifier: @ "cell"]; if (_cell == nil) { _cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: @ "cell"];} – Signare
Показать больше кода, почему делегат не устанавливает себя как делегат таблицы? – Wain