Отключить / включить содержимое ячейки uitableview при загрузке представления uitable из другого контроллера представления

У меня есть контроллер таблицы просмотра с панелью навигации, он используется для экрана профиля пользователя. В tableview есть 10 пользовательских ячеек, содержащих метку, текстовые поля, а кнопки textview и панели навигации используются для включения / выключения редактирования содержимого ячейки tableview. Пользователь может загрузить этот экран профиля пользователя из любого контроллера в приложении с помощью кнопки на этом контроллере просмотра. то, что я хочу сделать, - когда пользователь выбирает, чтобы открыть этот экран профиля пользователя (Tableview Controller) из любого места, должен появиться только режим просмотра; его ячейка с текстовыми полями и текстовыми представлениями не должна быть редактируемой. Однако, когда пользователь перемещается по экрану настроек приложения и переходит к экрану профиля пользователя, его ячейки могут быть включены или отключены для редактирования. какие-либо предложения для этого?

1 ответ

Решение

Попробуй это:

Часть 1. Подготовка вашего UITableViewController учебный класс

  1. в .h:
    • добавлять... @property (nonatomic, assign) BOOL enableCellSelection;
      ,
  2. в м

    • в -initWithStyle: делать...

      - (id)initWithStyle:(UITableViewStyle)style
      {
          self = [super initWithStyle:style];
          if (self) {
              enableCellSelection = YES;
          }
          return self;
      }
      
    • в -cellForRowAtIndexPath: делать...

      - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
      {
      //your normal cell handling code
      
      [cell setUserInteractionEnabled:(enableCellSelection ? UITableViewCellSelectionStyleBlue : UITableViewCellSelectionStyleNone)];
      return cell;
      }
      

Часть 2. Показаны ваши UITableViewController учебный класс

С любого метода...

//alloc/init normally
MyTableViewController *tvcObj = [[MyTableViewController alloc] init];

//explicitly disable the cell selection ability 
tvcObj.enableCellSelection = NO;

//display the tableView
[self.navigationController pushViewController:tvcObj animated:YES];

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

Другие вопросы по тегам