Регулировка indexPath iPhone - PullRequest
       2

Регулировка indexPath iPhone

0 голосов
/ 12 сентября 2011

У меня есть UITableView, который при определенных условиях должен иметь что-то добавленное к вершине. Все данные (за исключением того, что при определенных условиях вставляется вверху UITableView) поступают из массива.

Поскольку все извлекается из массива, мне нужно изменить indexPath, который выбирает эти объекты массива каждый раз, когда вызывается метод - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath. Если я пытаюсь создать локальную переменную и обновить локальную версию indexPath.row, она говорит мне, что она доступна только для чтения.

Как лучше всего это реализовать?

Рисунок ниже (это не код, а чертеж таблицы):

(REGULAR SITUATION) (3 lines)
array objectAtIndex:0;
-----
array objectAtIndex:1;
-----
array objectAtIndex:2;

и т.д.. и т.д.

(MODIFIED SITUATION) (4 lines)
blah blah modified insertion text here
-----
array objectAtIndex:0;
-----
array objectAtIndex:1;
-----
array objectAtIndex:2;

и т. Д.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

ЭТО - отличный учебник, который решает вашу проблему.

Использовать

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

ИЛИ

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

Возвращать строку / представление как что-то или пустое в зависимости от условия, которое вы используете при принятии решения, когда показывать его или нет.

2 голосов
/ 13 сентября 2011

Почему бы просто не добавить новый элемент в начале массива?

// Create a mutable copy and add the item at index 0
NSMutableArray *mutable = [myData mutableCopy];
[mutable insertObject:newItem atIndex:0];

// Then store the new array and reload the table
[myData autorelease];
myData = mutable;
[self.tableView reloadData];

Тогда вам не нужно делать ничего смешного с путями индекса:)

1 голос
/ 12 сентября 2011

Не иди по этому пути. Просто используйте tableHeaderView свойство UITableView, чтобы добавить что-нибудь поверх таблицы. Он будет прокручиваться так же, как UITableViewCell.

self.tableView.tableHeaderView = aView;

Чтобы удалить его, просто установите nil.

Если вы настаиваете на этом методе, просто держите BOOL, чтобы сообщить вам, в каком состоянии вы находитесь, и, если вам нужна дополнительная строка, просто вычтите 1 из indexPath.row, как

[myArray objectAtIndex:indexPath.row-1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...