У меня есть статический UITableView, содержимое каждой ячейки, которую я создал в раскадровке, но мне нужно изменить texLabels некоторых ячеек программным образом во время выполнения. Как мне это сделать?Изменить текстовую метку в статических ячейках в UITableView
ответ
Создать свойство для каждой ячейки вы хотите изменить в контроллере представления таблицы, например:
@property (weak) IBOutlet UITableViewCell *cell1;
@property (weak) IBOutlet UITableViewCell *cell2;
соединение каждый один к ячейке в Interface Builder.
Когда вам нужно только изменить текст лейбла, вы можете использовать
self.cell1.textLabel.text = @"New Text";
Если вам необходимо заменить весь ярлык, используйте
UILabel *newLabel = [[UILabel alloc] init];
self.cell2.textLabel = newLabel;
Вы можете получить ячейку с вашей точки зрения таблицы используя метод cellForRowAtIndexPath, вам нужно будет определить выход, который извлекает ваше табличное представление.
__weak IBOutlet UITableView *tableView;
после этого вы можете получить ячейку так:
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:yourRow inSection:yourSection];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[[cell textLabel] setText:@"Your new text"];
Может быть, после установки текста вам необходимо будет настроить ярлык, или ваш рост клеток, если вы хотите более глубокую помощь обеспечить более информации, и я буду рад помочь вам.
И все готово, надеюсь, что это поможет.
Вам не нужно объявлять выход в таблицуView, поскольку вы уже используете UITableViewController. –
UITableView, настроенный с помощью «Статических ячеек», может существовать только в контексте UITableViewController. –
@RossPenman опубликовал хороший ответ.
@ggrana отметил потенциальную проблему делать с памятью и повторным использованием клеток, однако не беспокоиться о том, что ...
Для UITableView
с статическими клетками всех клеток инстанцируются фронт, перед тем viewDidLoad
вызывается на вашем UITableViewController
и не используется повторно так, как это делают динамические ячейки. Таким образом, вы можете просто взять IBOutlets
прямо на UITextFields
, UISwitches
, UILabels
и вещи, которые вас действительно интересуют, что вы попали в ваши статические ячейки в раскадровке.
Я не знал, что вы можете создавать 'IBOutlets' из статических ячеек. Полагаю, вам придется больше докупить документацию. –
Мне это нужно.
dispatch_async(dispatch_get_main_queue(), ^{
(...textLabel updates)
[self.tableView reloadData];
});
Вы можете сделать что-то вроде этого
for (int section = 0; section < [table numberOfSections]; section++) {
for (int row = 0; row < [table numberOfRowsInSection:section]; row++) {
NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
UITableViewCell* cell = [self cellForRowAtIndexPath:cellPath];
cell.backgroundColor = [UIColor blackColor];
cell.textLabel.textColor = [UIColor whiteColor;
cell.textLabel.text = @"Your text";
}
}
Кроме того, убедитесь, чтобы сохранить ваши изменения из viewDidAppear и поместить их в viewWillAppear или вы столкнетесь с проблемами
Надеется, что это работает :
@IBOutlet weak var yourTextField: UITextField!
private var yourText: String?
Я просто обычай в делегатом этого Tableview в:
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
guard let yourText = yourText else { return }
yourTextField.text = yourText
}
При изменении текста:
yourText = "New text here"
tableView.reloadData()
Swift 3 Решение:
Сначала делают IBOutlet статического TableViewCell
@IBOutlet weak var cellFirst: UITableViewCell!
, то в viewDidLoad заменить ярлык Имя.
cellFirst.textLabel?.text = "Language"
Примечание: Если вы прикрепили ярлык на TableViewCell то просто скрыть его с помощью раскадровки.
- 1. Изменить ярлык на ячейках UITableView?
- 2. Позиционирование UIImageViews в ячейках UITableView
- 3. Изменить заголовки в UITableView статических клетках
- 4. Невозможно изменить текстовую метку на листе
- 5. Как изменить текстовую метку checkbox bootstrap?
- 6. Изображения в ячейках UITableView не соблюдают tintColor
- 7. Графика в ячейках UITableView исчезает
- 8. iOS: UIStepper в ячейках UITableView
- 9. Дублированные данные в ячейках UITableview
- 10. Swift: Вставьте текстовую метку в круглое изображение
- 11. Добавить текстовую метку в нарисованную фигуру
- 12. Openlayers 3: добавьте текстовую метку в функцию
- 13. Можно ли разместить текстовую метку в слое?
- 14. Обновить текстовую метку в панели управления viewbar
- 15. Как скопировать текстовую метку в Libgdx
- 16. Как преобразовать текстовую метку в целое?
- 17. IBOutlets в UITableView статических клетках
- 18. Показать текстовую метку вдоль полилинии
- 19. QProgressDialog не показывает текстовую метку
- 20. ToogleButton выровнять текстовую метку справа
- 21. Как добавить текст из массива в текстовую метку в раскадровке?
- 22. Как изменить размер textlabel в UITableView
- 23. Обновление subviews в ячейках на UITableView
- 24. Дата и время форматирования в ячейках UITableView
- 25. Перекрытие UILabels в пользовательских ячейках UITableView
- 26. Распознавание ссылок в пользовательских ячейках UITableview
- 27. Обнаружение касания и удержания в ячейках UITableView
- 28. UITableView с изображением в ячейках stacks
- 29. CoreData и UITableView: отображаемые значения в ячейках
- 30. iOS - UIButton в выбранных ячейках UITableView
Отличный !!! Благодарю. Я не знаю, что textLabel имеет свойство text. – vZ10
Нет, вы не должны сохранять все свои ячейки, потому что вы должны повторно использовать свои ячейки и не загружать все ячейки в память, вы должны иметь только те ячейки, которые вы показываете загруженными! – ggrana
@ggrana Поскольку это статические ячейки, с которыми мы имеем дело, вряд ли будет так много из них, поэтому использование памяти не будет столь значительным. Однако я согласен с тем, что ваш отредактированный ответ лучше моего, поэтому я его поддержал. –