Как я могу прикоснуться к индексу текстового поля в ячейке табличного представления в IOS 7
Я хочу получить индекс затронутого текстового поля в ячейке таблицы. Тот факт, что я мог сделать это до IOS 7. В прошлом я мог получить индекс текстового поля ниже. Этот метод также терпит неудачу к IOS 7. Я прочитал тег должен использовать вместо этого метода. Но я также использую тег для каждого отдельного текстового поля. Поскольку, нажимая на текстовое поле, я делаю разные вещи, например, открываю сборщик или открываю окно выбора. Помогите, пожалуйста, как я могу получить номер строки каждого текстового поля При прикосновении к текстовому полю.
-(NSInteger)getTextFieldCellRow:(id)element{
UITableViewCell *cell = (UITableViewCell *)[[(UITextField*)element superview] superview];
UITableView *table = (UITableView *)[cell superview];
NSIndexPath *textFieldIndexPath = [table indexPathForCell:cell];
return textFieldIndexPath.row;
}
3 ответа
Хорошо я решил
-(NSIndexPath *) getButtonCellRow:(UITextField *) b {
UITableView *tv = nil;
UIView *superViewTemp = [b superview];
UITableViewCell *cell=nil;
BOOL isFoundTable=FALSE;
BOOL isFoundCell=FALSE;
while(superViewTemp != nil && ![superViewTemp isKindOfClass:[UIWindow class]]){
if ([superViewTemp isKindOfClass:[UITableViewCell class]]) {
cell=(UITableViewCell*)superViewTemp;
isFoundCell = TRUE;
}else if ([superViewTemp isKindOfClass:[UITableView class]]){
tv = (UITableView*)superViewTemp;
isFoundTable = TRUE;
}
superViewTemp = [superViewTemp superview];
if(isFoundCell && isFoundTable){
break;
}
}
if(tv != nil && cell != nil){
return [tv indexPathForCell:(UITableViewCell*)cell];
}
return nil;
}
Это должно быть очень простое решение
UIView * view = textField;
while (! [view isKindOfClass: [UITableViewCell class]])
{
view = [view superview];
}
CellClass * cell = (CellClass *) представление;
Попробуйте с помощью следующего кода:
UIView *contentView = (UIVIew *)[textfield superview];
UITableViewCell *cell = (UITableViewCell *)[contentView superview];
NSIndexPath *indexPath = [self.tableview indexPathForCell:cell];
NSLog(@"%d", indexPath.row);
Но в iOS 7 вы можете получить UITableViewCell
по следующему коду:
UITableViewCell *cell = (UITableViewCell *)[[contentView superview] superview];