#iphone #objective-c #ios
#iPhone #objective-c #iOS
Вопрос:
Я хочу использовать объект метода в другом методе. Как я могу это сделать?
Я получил объект с именем «cell». Я настраиваю его в cellForRowAtIndexPath. Я хочу настроить его в didSelectRowAtIndexPath.
Спасибо за помощь!
Flo
Комментарии:
1. Пожалуйста, сформулируйте свой вопрос четко. Что означает «настроить его в cellForRowAtIndexPath»?
2. Возможно ли в этом случае использовать performSelector ?
3. Это означает, что я добавляю цвет фона и другие подобные вещи. Когда я нажимаю на ячейку в моем TableView, я хочу изменить фон ячейки, но в didSelectedRowatIndexPath.
4. Возможно, стоит выполнить базовое руководство по Objective-C, прежде чем обращаться к сообществу за помощью.
Ответ №1:
Вы можете получить выбранную ячейку в didSelectRowAtIndexPath как
YourCustomCell *selectedCell = (YourCustomCell *)[tableView cellForRowAtIndexPath:indexPath];
Редактировать:
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
YourCustomCell *selectedCell = (YourCustomCell *) [tableView cellForRowAtIndexPath:indexPath];
selectedCell.selected = YES; // Calls setSelected:(BOOL)selected animated:(BOOL)animated function of table view cell.
}
Следующее должно быть в вашем классе ячеек табличного представления.
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
// Configure the view for the selected state
if (selected) {
// set background for selected state...
}else {
// set background for unselected state...
}
[super setSelected:selected animated:animated];
}
Комментарии:
1. Спасибо, это то, чего я хочу. Но теперь, когда я выбираю ячейку и хочу изменить ячейку, первая остается выбранной.
2. Извините, не могу вас получить. Не могли бы вы, пожалуйста, объяснить.
3. Я получил tableview с tableviewcell внутри. При выборе ячейки меняется фон: это то, что я хочу. Но когда я выбираю другую ячейку, у меня выделяются две ячейки: первая и новая. Я хочу, чтобы первый объект вернулся к своему первому пользовательскому (cellForRowIndexPath)
4. Выполняете ли вы cell.selected = YES, а затем используете -(void)setSelected:(BOOL)selected animated:(BOOL)анимированную функцию для изменения фона? Если да, то вы можете отменить выделение всех ячеек, а затем указать cell.selected = YES
5. Нет, я не такой. Я меняю фон в didSelectedRowatIndexPath, но когда он изменен, я не могу вернуться к исходному фону.
Ответ №2:
Вам нужно создать глобальную переменную, которая изменяется при нажатии didSelectRowAtIndexPath
. Затем, когда вы измените эту переменную, вызовите [theTableView reloadData]
. Это заставляет UITableView
перезагрузить все ячейки, которые можно увидеть (что вызывает cellForRowAtIndexPath
снова).
Если вы пытаетесь добавить флажок или что-то подобное, вы можете захотеть добавить NSMutableArray
и сохранить логические значения для каждой ячейки там и использовать параметр indexPath.row
, чтобы узнать, какой объект вам нужно изменить в этом массиве при вызове didSelectRowAtIndexPath
.