Я использую indexPath.row, чтобы определить, в какой строке моего табличного представления я что-то делаю. Название моих ячеек содержит число, которое должно быть 1 в первом ряду и 18 в последнем, поэтому у меня 18 рядов. Это работает для первых 11 строк, но после этого у меня есть номера в заголовке, которые, кажется, генерируются случайным образом! Иногда 16, потом 5, потом 18, потом 12 ... и так далее.
В чем проблема с этим / почему переменная indexPath.row ведет себя так?
Мой метод cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"myCell" owner:self options:nil];
cell = cell0;
self.cell0 = nil;
}
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = [NSString stringWithFormat:@"Cell %d", indexPath.row];
return cell;
}
Есть еще предложения по решению проблемы? Я не работал до сих пор ...
// Обновление с дополнительным кодом:
Вот как я объявляю ячейку. Он находится в файле XIB (шаблон «пустой XIB»), в который я просто поместил ячейку из библиотеки в IB.
@interface myViewController : UITableViewController {
UITableViewCell *cell0;
}
@property (nonatomic, retain) IBOutlet UITableViewCell *cell0;
Затем в верхней части файла myViewController.m:
@synthesize cell0;
Мой метод cellForRowAtIndexPath уже опубликован выше. Он равен методу cellForRowAtIndexPath в документации по SDK, и в примере Apple он работает.