Могу ли я редактировать textLabel ячейки UITableView напрямую? - PullRequest
0 голосов
/ 24 ноября 2011

Хорошо, я знаю, что здесь уже есть куча вопросов по этой теме, но я не смог найти ничего, что мне нужно.

У меня есть UITableViewCell, который я хочучтобы иметь возможность выбрать (обработать касание с помощью didSelectRowAtIndexPath:), а затем ответить на этот выбор, позволив пользователю начать редактирование содержимого textLabel ячейки.Мне нужна метка, потому что мне нужно несколько строк текста.
Мне нужно, чтобы высота ячейки увеличивалась по мере того, как пользователь вводит все больше и больше текста.

Нужно ли создавать подклассUITableViewCell а у меня есть собственный ярлык или textView?Или я могу использовать textLabel, который уже там?

Пожалуйста, сообщите!

Ответы [ 3 ]

1 голос
/ 24 ноября 2011

У меня есть решение для вас, Что именно вам нужно. Даже я столкнулся с этой проблемой и нашел решение тоже. Проверьте по этой ссылке . Вам нужно больше поработать над этим примером для динамического определения размера ячейки

1 голос
/ 24 ноября 2011
  • Прежде всего, вы должны быть в состоянии рассчитать фрейм текста, используя метод sizeWithFont:constrainedToSize:lineBreakMode: NSString.

  • В вас делегат UITableView реализует tableView:heightForRowAtIndexPath: метод.Вычислите высоту текста в каждой ячейке, также добавьте отступы и все остальное, что вам может понадобиться.Я также кэшировал бы это значение, пока текст не будет изменен.

  • Подкласс UITableViewCell.У вас есть два варианта:

    1. Добавляйте UITextView в ячейку каждый раз, когда пользователь хочет отредактировать текст и удалить его после этого.
    2. Используйте UITextView для отображения и редактирования текста (у него есть свойство editable).Но я не уверен, насколько быстро это будет внутри стола, я не проверял это лично.

    Я использую первый вариант в своем приложении.

  • Вы можете создать подкласс UITextView или использовать его методы делегата для обновления его высоты при вводе пользователем чего-либо.

  • Распространить изменение высоты на ваш делегат UITableView.

Чтобы обновить анимированные ячейки, вызовите следующий код:

[self.tableView beginUpdates];
[self.tableView endUpdates]; 
1 голос
/ 24 ноября 2011

То, что я могу предложить или, по крайней мере, попытаться сделать лучше всего, - это создать массив текстовых строк (NSString) для каждой ячейки.Конечно, вы знаете, что можете редактировать массив в определенной точке, поэтому, зная, какую ячейку вы выбрали, вы сможете узнать, какую строку редактировать.Отсюда, когда текст метки был отредактирован, просто вызовите: [tableView reloadData]

И это должно обновить это для вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...