Вызов объекта другим методом

#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 .