#iphone #cocoa-touch #uikit
#iPhone #cocoa-touch #uikit
Вопрос:
Кажется, я не могу найти никакой информации о том, что должно быть простой проблемой. У меня есть таблица, которая содержит ряд ячеек. При нажатии на ячейку отображается подробная информация об этом объекте. Я знаю, что возможно иметь кнопку, которая помещает все данные на экран в режиме редактирования. Какие-либо руководства или советы о том, как это сделать (правильно / с использованием лучших практик)?
Просто для ясности, это для iPhone / Objective-C / Cocoa.
Спасибо,
РЕДАКТИРОВАТЬ 1
Извините. Я знаю, как поместить туда кнопку. Но как сделать метки доступными для редактирования?
Ответ №1:
Вы путаете два состояния:
-
Перевод TableView в режим редактирования — предназначен для удаления или перемещения ячеек в таблице, независимо от содержимого ячейки. Это контролируется свойством UITableView.editing. и
-
Перевод tableViewCell в какое-то состояние редактирования. Для ячейки нет официального состояния редактирования (т. Е. нет единого флага, который нужно установить, чтобы превратить все UILabels в ячейке в редактируемые текстовые поля.) Вам нужно реализовать всю эту логику самостоятельно. Если вы используете .xibs, хорошей практикой здесь является использование другого .xib для режима редактирования вашей ячейки.
Ответ №2:
У вас не может быть редактируемых меток. Однако вы можете заменить метку текстовым полем при нажатии кнопки, а затем обновить метку после завершения.
Один из способов сделать это следующий. Создайте текстовое поле в том же месте, что и метка, и задайте его изначально textField.hidden = YES;
. Затем реализуйте что-то в этом роде:
-(IBAction)editMyCell:(id)sender {
textField.text = cellLabel.text;
cellLabel.hidden = YES;
textField.hidden = NO;
[textField becomeFirstResponder];
}
и когда редактирование завершится, восстановите с помощью
-(void)textFieldDidEndEditing:(UITextField *)textField {
cellLabel.text = textField.text;
textField.hidden = YES;
cellLabel.hidden = NO;
[textField resignFirstResponder];
}
Вероятно, вы захотите немного изменить эту идею для вашей ситуации, но, вероятно, это самая простая в реализации вещь, которая позволяет достичь желаемого.
Комментарии:
1. Это кажется хорошим путем. Любое предложение о наилучшем способе сделать это 🙂
2. Вы можете создать текстовое поле того же размера и расположения, что и метка. Затем установите для него значение HIDDEN до редактирования, после чего вы установите для метки значение HIDDEN, затем вернитесь обратно. Просто не забудьте синхронизировать текст TF с текстом метки, когда начинается редактирование, и наоборот, когда оно заканчивается.
Ответ №3:
В базовом sdk нет ничего, связанного с редактированием UIViewController. Обычно такая логика определяется программистом. Но я мог видеть, что кто-то пишет функцию, которая превращает все ваши UILabels в вашем UIView в UITextViews, чтобы пользователь мог редактировать текст.
Там может быть пример кода, но мне кажется, что это пользовательский код.