2017-01-10 8 views
1

У меня есть textField на пользовательской ячейке в tableView. Когда выбран один из cell, я могу отключить textField для этого конкретного cell с помощью установленного выбранного метода.Отключить текстовое поле для других ячеек таблицы, когда выбрана одна ячейка

(void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 
if (selected) { 
    self.accountNameTxtField.enabled = NO; 
} else { 
    self.accountNameTxtField.enabled = YES; 
    } 
} 

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

+0

сначала отключить все текстовое поле, чем включить конкретный текстовое поле так, таким образом, легко – iOS

+0

- (пустоты) Tableview: (UITableView *) Tableview didSelectRowAtIndexPath: (NSIndexPath *) indexPath { UITableViewCell * клеток = [self.tableView cellForRowAtIndexPath: indexPath]; [cell.textField становится первым пользователем]; } – iOS

+0

попробуйте этот код для включения определенного текстового поля – iOS

ответ

0

Вы должны использовать переменную экземпляра, вы можете использовать indexPath.

Когда пользователь выбирает любую ячейку, задайте значение этой переменной экземпляра выбранному indexPath.

И reloadTable.

В cellForRowAtIndexPath проверьте, выбран ли текущий indexPath indexPath, если да, включите функцию textField else.

+0

Спасибо, что ответили. Можете ли вы быть более изобретательными. – Sadik

+0

[This] (http://stackoverflow.com/a/15426787/3411787) выглядит почти аналогичным, просто предположим, что включен textField вместо галочки. –

0

кнопку Создать на Tableview ячейки и включить или отключить текстовое поле на Tableview или можете применить эту логику на Tableview didSelectRowAtIndexPath

-(void) btnClick:(id)sender 
{ 
UIButton *btn = (UIButton *)sender; 
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:tblView]; 
NSIndexPath *indexPath = [tblView indexPathForRowAtPoint:buttonPosition]; 
NSLog(@"table view row is ----%ld",indexPath.row); 

if (btn.isSelected == false) 
{ 
    [btn setSelected:true]; 
    [selectRow addObject:[NSString stringWithFormat:@"%ld",indexPath.row]]; 
    self.accountNameTxtField.enabled = yes; 
    //selectRow is NSMutableArray 
} 
    else 
{ [btn setSelected:false]; 
    [selectRow removeObject:[NSString stringWithFormat:@"%ld",indexPath.row]]; 
    self.accountNameTxtField.enabled = no; 
} 
} 

    [tbleview relaoddata]; 
if ([selectRow containsObject:[NSString stringWithFormat:@"%ld",indexPath.row]]) 
{ 
accountNameTxtField.enabled = yes; 
} 
else 
{ 
accountNameTxtField.enabled = NO; 
} 
+0

Это запутанно, вы создаете кнопку на btn action. – Sadik

+0

Вы можете сделать текстовое поле на ячейке uitableview, и выбор мог использовать такую ​​же логику. Вам нужна проверка, чтобы содержать объект в ячейке для метода rowindex. –

0

Используйте ваши данные, чтобы сделать это, вы должны иметь некоторые данные для массива содержащие словари или объект класса, я демонстрирую объект класса.

Скажем у вас есть объект класса DataClass создать свойство BOOL сказать textFieldSelected, теперь выполните следующие действия

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath]; 

    DataClass *object=[self.dataArray objectAtIndex:indexPath.row];  
    [cell.textField setTag:indexPath.row]; 

    cell.textField.delegate=self; 

    cell.textField.enabled=object.textFieldSelected; 

    return cell; 
} 

Теперь, когда вы выбираете строку

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    for(DataClass *object in self.dataArray){ 
     object.textFieldSelected=NO; 
    } 
    DataClass *object=[self.dataArray objectAtIndex:indexPath.row]; 
    object.textFieldSelected=YES; 
    [tableView reloadData]; 

} 

Сначала вы можете установить textFieldSelected=YES; так, что все текстовые поля включены. Вы можете играть с объектом, и он будет работать именно так. Всего наилучшего.

+0

Привет. спасибо за ответ, Должен ли я создать свойство как не атомарное, назначить? – Sadik

+0

ДА, потому что это BOOL – iphonic

+0

Я создал это свойство. когда я выбираю ячейку, ячейка не выбрана. Должен ли я прокомментировать мой выше код в пользовательской ячейке. – Sadik

0

Наконец-то мне удалось найти решение с целым числом выбора ячейки.

подсчет выбора ячейки увеличивается, будет выбирать строку по методу указателя пути и установить это значение в NsuserDefaults.

selectedIndex++; 

NSString *valueToSave = [NSString stringWithFormat:@"%ld",(long)selectedIndex]; 
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"SelectedIndexString"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

отсчет выбора соты получает снижается в методе didDeselectRowAtIndexPath и установить это значение в NSUserDefaults.

selectedIndex--;

В моем классе ячеек таблицы в методе textFieldDidBeginEditing получают сохраненное значение из NsUserDefaults и действуют.

NSString * SelectedIndexString = [[NSUserDefaults standardUserDefaults] stringForKey: @ "SelectedIndexString"];

NSLog(@"%ld",(long)SelectedIndexString); 
NSInteger SelectedIndexCount = [SelectedIndexString integerValue]; 

if (SelectedIndexCount) { 
    self.accountNameTxtField.enabled = NO; 
} 
else{ 
    self.accountNameTxtField.enabled = YES; 

} 

Спасибо, что так много парней. Спасибо за ваше время.