2015-07-14 3 views
0

Я использую несколько UITableView с пользовательскими ячейками в одном viewController. Пользовательская ячейка имеет textFields, я могу редактировать текстовые поля. Теперь я хочу получить tableViewCell точного UITableView в методе делегата textField при редактировании textField?получить UITableViewCell от NSIndexPath?

Помните, что есть несколько табличных представлений. Я хочу получить точную ячейку точной таблицы, которую редактирую. Любая помощь?

+0

Я предложу цикл к верхним представлениям, пока вы не получите экземпляр uitableviewcell, а затем проверьте, является ли это своего рода класс – iShaalan

+0

. Я бы рекомендовал, чтобы контроллер вида управлял только одним табличным представлением. –

+0

в вашем обоих табличном виде есть текстовое поле ??? –

ответ

1

Вы должны тег к вашему как Tableview

использовать ниже код в текстовое поле делегата

UITableViewCell *cell = (UITableViewCell *) textField.superview.superview.superview; 
UITableView *curTableView = (UITableView *)cell.superview; 
NSIndexPath *indexPath = [curTableView indexPathForCell:cell]; 
+1

Это очень плохая идея. Если Apple когда-либо изменит иерархию представлений, ваше приложение не будет работать (они сделали это раньше). – CW0007007

-1

НИКОГДА не перебрать superviews, правильный и самый надежный способ сделать то, что вы хотите :

CGPoint textViewPosition = [textView convertPoint:CGPointZero toView:self.tableView]; 
    CGRect senderFrame = CGRectMake(textViewPosition, textViewPosition, textView.frame.size.width, textView.frame.size.height); 
    NSArray *indexPaths = [self.tableView indexPathsForRowsInRect:senderFrame]; 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[indexPaths firstObject]; 

Это может усложниться, поскольку у вас есть d ifferent table views в 1 view, я предлагаю переосмыслить, почему у вас более одного вида таблицы и посмотреть, не можете ли вы сделать это более эффективным способом, например, 1 табличный вид с настраиваемыми разделами и т. д.

+0

этот сценарий невозможен в этом коде , потому что в методе текстового поля мы не знаем о tableview для [textView convertPoint: CGPointZero toView: self.tableView]; –

+0

Вам необходимо перестроить свой код, чтобы делегат был в нужном месте. – CW0007007

Смежные вопросы