При загрузке WishController # вы помещаете три различных элемента в массив, поэтому, конечно, если в WishlistController # tableView: numberOfRowsInSection: вы возвращаете [количество данных] как количество строк, вы получаете три строки.
С другой стороны, вы в WishlistController # tableView: cellForRowAtIndexPath: вы не смотрите, какая запись должна быть представлена, поэтому она всегда будет показывать только одну-единственную ячейку.
Если вы хотите представить только одну ячейку в своей таблице, вы замените свой WishlistController # tableView: numberOfRowsInSection: на
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
Если вы хотите показать несколько желаний, вам лучше сделать из них реальный объект или, по крайней мере, использовать NSDictionary, где одна запись в словаре представляет один объект (= желание) с несколькими атрибутами (заголовок, ссылка, описание).
Если для ваших первых шагов в Cocoa / Objective-C вы действительно не хотите заглядывать в NSDictionary, вы также можете
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return floor([data count]/3);
}
а затем в #tableView: cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
int row = indexPath.row * 3;
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
cell.textLabel.text = [array objectAtIndex:row];
cell.detailTextLabel.text = [array objectAtIndex:row+2];
NSLog(@"%@", array);
}
return cell;
}
Но это определенно только для показа прототипа, чтобы получить что-то. Вскоре вы захотите заглянуть в NSDictionary и, прежде чем что-то выпускать, вы лучше изучите использование подходящих объектов для вашей модели данных, например, с базовыми данными. В самом деле.
еще две вещи:
-В WishlistController # tableView: numberOfRowsInSection: строка
[data release];
после возврата никогда не вызывается. Вы, вероятно, хотите
[data autorelease];
до оператора возврата.
- Вы не хотите читать файл // искать ваши объекты каждый раз, когда отображается строка в вашей таблице. Создайте массив как переменную экземпляра вашего контроллера и используйте его в качестве источника данных.