2012-04-02 5 views
2

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

Я попытался это

UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath] 

Но это выходит из строя, так как клетка обычай.

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

+0

поста больше коды. отправлять сообщения об ошибках с момента сбоя. – Ali

+1

Почему вы хотите получить доступ к сотовой ячейке? Вы должны просто иметь дело с DATA, а не с CELL. Ячейка только что отображает данные, и данные хранятся в вашей модели (поиск MVC, если вы не уверены). –

+0

Использование '- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath' вы бы выбрали индекс, используя' indexPath.row'. Вы получите ячейку, выбранную пользователем. – Hemang

ответ

8

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

UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath] 

попробовать с помощью

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

Надеется, что это помогает

+0

спасибо, что его работала – user1288402

+0

@ user1288402 добро пожаловать. Пожалуйста, не забудьте отметить ответ правильно, если это поможет. Это побудит пользователей ответить на ваши вопросы в будущем. – Novarg

+0

спасибо: D действительно работает хорошо –

1

В вашем методе TableView DidSelect делегатом

- (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.

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

2

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

#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];