Как я могу отправить сообщение в выбранную ячейку таблицы после того, как она переместилась за пределы экрана? - PullRequest
0 голосов
/ 17 февраля 2011

Вот мой сценарий:

Я показываю UITableViewController в UINavigationController, и я сам рисую ячейки в подклассе.Для того, чтобы ячейки выглядели как можно ближе к подобным собственным ячейкам, у меня есть флаг, который указывает, находится ли он в переходном состоянии или нет, чтобы предотвратить видимое мигание цвета текста, когда пользователь перемещается обратно вверх по стеку изподробный вид табличного представления.

В настоящее время я установил свой флаг перехода в -tableView:didSelectRowAtIndexPath:, например, так:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // (stuff for pushing the detail view on to the navigation stack)

    ((MyCustomTableViewCell *) [self.tableView cellForRowAtIndexPath: indexPath]).transitioning = YES;
}

Это работает довольно хорошо, с одной оговоркой: непосредственно переданимированный список за кадром, переход хорошо виден всем, кто его ищет, так как текст ячейки меняется с черного (на синий) с белого (на синий).

Мой вопрос: Есть ли способ получить текущую выбранную ячейку из табличного представления, после того, как она перешла за пределы экрана, и отправить ей сообщение?(при условии, что он не освобождается, просто выгружается)

Или я просто все делаю не так?

(Если вы хотите сказать, что никто этого не заметит, продолжайтепомните, что для меня это приемлемо, мне просто интересно, есть ли способ улучшить его. Хорошие приложения для iOS - это мелочи.)

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Что вы подразумеваете под "не допустить видимого мигания цвета текста"? По умолчанию ячейки таблицы iOS, кажется, не делают этого, по крайней мере, неприятным способом. Возможно, вы сможете вернуться к реализации UITableViewCell и определить, неправильно ли вы обрабатываете -setSelected: animated: и -setHighlighted: animated

0 голосов
/ 17 февраля 2011

UITableView не хранит общедоступный список всех ячеек в таблице.
Чтобы получить доступ ко всем ячейкам (в том числе вне экрана), вам нужно поддерживать отдельный массив сгенерированных ячеек.,



@interface MyViewController : UIViewController 
{
   NSMutableArray* tableCells;
}



@implementation MyViewController

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableCells == nil)
      tableCells = [[NSMutableArray alloc] init];

    UITableViewCell* cell;
    if (indexPath.row < [tableCells count])
    {
        // Return a cell from the cached list
        cell = (UITableViewCell*)[tableCells objectAtIndex:indexPath.row];
    }
    else
    {
        // Create a new cell
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:@"identifier"];  

        // Customize and fill the cell with content anyway you wish
        // ...
    }

    return cell;
}

Теперь, когда у вас есть список всех ячеек в таблице, вы можете отправить им любое сообщение в любое время.

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