Хранить логическое значение в UITableviewcell - PullRequest
0 голосов
/ 20 февраля 2012

Как я могу сохранить логическое значение в каждой строке UITableview.Мне нужно получить логическое значение, хранящееся в ячейке, когда эта конкретная ячейка выбрана.

Ответы [ 5 ]

2 голосов
/ 20 февраля 2012

Есть так много способов:
1. Вы можете использовать свойство UITableViewCell.tag
2. Вы можете создать свой собственный класс ячейки, унаследованный от UITableViewCell, и добавить туда обычное свойство для вас, значение BOOL
3. Вы можете использовать массив, связанный с вашим табличным представлением, и когда вы выделите ячейку, просто используйте indexPath, чтобы найти соответствующее значение в вашем массиве
и т.д.

1 голос
/ 20 февраля 2012

Рекомендую использовать свойство тега в UITableViewCell.

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;            
// returns nil if cell is not visible or index path is out of range
{

    static NSString *identifier = @"MyIndetifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault     reuseIdentifier:CellIdentifier] autorelease];
  }
  //make sure tu put here, or before return cell. 
  cell.tag = 0; //0 =NO, 1=YES;

  return cell;
}

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    BOOL boolean = cell.tag; // return 0 or 1. based on what boolean you set on this particular row.
}
0 голосов
/ 20 февраля 2012

Вам нужно реализовать метод UITableView

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;            
// returns nil if cell is not visible or index path is out of range
{
 //create cell here
static NSString *CellIdentifier = @"Cell";
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 if (cell == nil) {
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault     reuseIdentifier:CellIdentifier] autorelease];
  }
  return cell;
}
  • (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { // используя indexpath.row, вы можете получить доступ к ячейке, по которой щелкнул пользователь. }
0 голосов
/ 20 февраля 2012

NSMutableArray * tableData;

каждая ячейка таблицы ассоциируется с хранилищем NSMutableDictionary в tableData, вы можете установить NSNumber (хранилище bool) для словаря.

0 голосов
/ 20 февраля 2012

Возможно, у вас есть другое хранилище, где вы храните такие вещи, как заголовок ячейки таблицы или субтитры.Храните логическое значение там.Используйте это, чтобы преобразовать bool во что-то, что вы можете поместить в массив или словарь.

[NSNumber numberWithBool:YES]

Например, если вы используете NSArray строк для хранения заголовков, вместо этого используйте массивсловари.Каждый словарь будет иметь логическое значение «title» и (например) «isActive» (хранится как NSNumber).

...