просмотр таблицы с галочкой и подробное раскрытие вместе

Я делаю tableview с выбором нескольких строк. Итак, я использовал действие типа аксессуара галочки. Мне также требуется отредактировать / переименовать текст в выбранной строке.

Как правило, мне нужно поставить галочку (флажок) слева и раскрыть подробности справа от ячейки, и то и другое работает.

Ниже приведен код для галочки, которая у меня есть, в настоящее время галочка отображается с правой стороны ячейки.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.

    TSIPAppDelegate *appDelegate = (TSIPAppDelegate *)[[UIApplication sharedApplication]delegate];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = cell.textLabel.text;
    if (cell.accessoryType==UITableViewCellAccessoryNone)
    {
      cell.accessoryType=UITableViewCellAccessoryCheckmark;
      appDelegate.selectedFile = cellText;
      if (prevSP!=indexPath.row) {
        cell=[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:prevSP inSection:0]];
        cell.accessoryType=UITableViewCellAccessoryNone;
        prevSP=indexPath.row;
      }
    }
    else if (prevSP!=indexPath.row){
      cell.accessoryType=UITableViewCellAccessoryNone;
    }
}

Есть предложения, пожалуйста?

Когда строка выбрана, необходимо включить / выключить флажок И нажать кнопку раскрытия, это должно открыть новое представление для редактирования выбранной строки.


person Arun    schedule 23.02.2013    source источник
comment
Не могли бы вы включить код, который у вас есть? Это позволит другим лучше понять, что у вас есть в настоящее время.   -  person Jesse    schedule 23.02.2013
comment
@Jesse: Я добавил код. пожалуйста, проверьте. Подробности раскрытия еще не написаны.   -  person Arun    schedule 23.02.2013
comment
@Arun Лучше вместо UITableViewCellAccessoryCheckmark вы можете добавить UIImagview, у которого есть изображение галочки в начале каждой ячейки и тип аксессуара в конце каждой ячейки   -  person Vishnu    schedule 23.02.2013


Ответы (3)


Это образец кода, который я использовал в одном из своих приложений.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

{

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    cell.textLabel.text=[NSString stringWithFormat:@"%@",[cellarray objectAtIndex:indexPath.row]];
    cell.textLabel.textColor=[UIColor blackColor] ;
    cell.textLabel.tag=indexPath.row;
    cell.textLabel.font=[UIFont fontWithName:@"HelveticaNeue-Bold" size:15];
    // cell.textLabel.highlightedTextColor=[UIColor colorWithRed:242.0f/255.0f green:104.0f/255.0f blue:42.0f/255.0f alpha:1] ;
    cell.selectionStyle=UITableViewCellSelectionStyleNone;


}

UIImageView *ima=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"tick.png"]];
ima.frame=CGRectMake(280, 15, 14, 14);
ima.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin |UIViewAutoresizingFlexibleRightMargin;

int row = [indexPath row];
//cell.accessoryType = (row == selectedRow) ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
cell.textLabel.textColor= (row == selectedRow) ? [UIColor colorWithRed:242.0f/255.0f green:104.0f/255.0f blue:42.0f/255.0f alpha:1] : [UIColor blackColor] ;
if (row==selectedRow) {

    [cell.contentView addSubview:ima];

}

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Background.png"]];
[tempImageView setFrame:tableView.frame];

tableView.backgroundView = tempImageView;
[tempImageView release];
return cell;
}


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

selectedRow = [indexPath row]; // selected row is of type int  declared in .h

[tableView reloadData];


}

Этот код будет иметь только одну галочку во всем tableView. Вы можете изменить его, чтобы в нем было несколько галочек.

Надеюсь это поможет !!!

person Vishnu    schedule 23.02.2013
comment
Кажется, вы добавляете изображение в подпредставление строки. Но мне нужно хранить отмеченные строки в массиве. И позволяя каким-то образом «переименовывать / редактировать» текст выбранной строки. Возможно ли «переименование» текста? - person Arun; 23.02.2013
comment
@Arun Да, ты сказал, что тебе нужна галочка слева и тип аксессуара справа. И это один из способов. И вы можете сохранить текст текстовой метки в массиве для переименования в didSelectRowAtIndexPath - person Vishnu; 23.02.2013
comment
Я хотел иметь подробное раскрытие только для цели «переименования». Включенная опция «переименование / редактирование» имеет более высокий приоритет, чем ее выравнивание по левому или правому краю. Спасибо. - person Arun; 23.02.2013
comment
@Arun Если я правильно понял. При касании раскрытия деталей необходимо переименовать текстовую метку ячейки. и подробное раскрытие должно быть типа галочки, верно? - person Vishnu; 23.02.2013
comment
касание любого места в строке должно сделать галочку активированной или отключенной. прикосновение к отметке о раскрытии должно позволить редактировать текст. - person Arun; 23.02.2013
comment
@Arun Будет ли функция переименования выполняться на той же странице или вы показываете новое представление для переименования? - person Vishnu; 23.02.2013
comment
либо всплывающее окно, либо новый экран, оба в порядке. - person Arun; 23.02.2013
comment
@Arun Тебе предстоит много работы. При выборе типа аксессуара вы можете использовать этот метод - (void) tableView: (UITableView *) tableView accessoryButtonTappedForRowWithIndexPath: (NSIndexPath *) indexPath - person Vishnu; 23.02.2013
comment
Спасибо. Во всяком случае, я получил идею из приведенной ниже ссылки, чтобы реализовать «переименование». Спасибо за поддержку. [ссылка] stackoverflow.com/questions/7835494/add- кнопка в таблице - person Arun; 24.02.2013
comment
Господи Иисусе ... Я не могу поверить, что Apple реализовала подобное исправление, подобное этому, в списке Настройки ›WiFi, и до сих пор не предложила правильного решения !! Аааааааааааааааааааа! - person Josh; 15.03.2016

Тип accessoryType имеет тип enum UITableViewCellAccessoryType, по определению он не принимает несколько значений, так как это не побитовое перечисление. Итак, вам нужно выбрать одно и имитировать другое с помощью специального кода.

person Saran    schedule 23.02.2013

Я бы рекомендовал использовать тип аксессуара UITableViewCellAccessoryCheckmark в табличном представлении и добавить кнопку «Подробное раскрытие» в ячейку. К сожалению, вы не можете сделать именно то, что ищете, но это самый чистый альтернативный подход, который я нашел.

person Kyle Clegg    schedule 08.09.2014