Как получить доступ к ячейке в табличном представлении? - PullRequest
2 голосов
/ 02 апреля 2012

Я новичок в разработке iPhone.Я застрял с проблемой.Я хочу, чтобы функция флажка была реализована в моем UITableView.Но мои UITableViewCells - это пользовательские ячейки, которые состоят из изображения и 3 UILabels.Я мог бы вывести вспомогательное представление в табличное представление, чтобы можно было установить изображение флажка, и я преуспел в этом.Но проблема заключается в том, что всякий раз, когда я нажимаю на изображение, меняется только последний флажок ячейки.Я хотел бы получить доступ к ячейке, на которую нажал.

Я пробовал это

    UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath]

Но происходит сбой, поскольку ячейка настраивается.

Может кто-нибудь предложитьмне хороший способ сделать это?

Ответы [ 3 ]

9 голосов
/ 02 апреля 2012

Вместо использования

UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath]

попробуйте использовать

YourCustomCell *cell = (YourCustomCell *)[self.tableView cellForRowAtIndexPath:indexPath];

Надеюсь, это поможет

2 голосов
/ 02 апреля 2012

Прежде всего вам нужно определить тег -

#pragma imageViewTag 1

затем в вашем cellForRowAtIndexPath назначьте этот тег для вашего изображения

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

тогда вы можете получить доступ к своему изображению в любом месте с помощью этого тега как -

 UITableViewCell *cellView = (UITableViewCell*) [tblView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]];

 UIImageView *imgView = (UIImageView*) [cellView viewWithTag:imageViewTag];
1 голос
/ 02 апреля 2012

В вашем TableView DidSelect Delegate метод

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

   UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   UIImageView *image = [cell.contentView viewWithTag:15];
   //You should have set the tag value as 15  when creating the image in cell 
   //and you should have added to the cell contentview

}

Если вы не можете получить ячейку, вероятно, вы не правильно использовали бы концепцию многоразовой ячейки. Так что публикуйте весь код cellforrowindex.

Если вы используете чек. Почему вы не используете по умолчанию индикатор раскрытия табличного представления вместо своего изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...