UITableView Center Сведения о ячейке - PullRequest
2 голосов
/ 19 декабря 2011

Я пытаюсь синхронизировать UITableView с UILabel, чтобы убедиться, что они показывают одинаковые данные; конечно, все будет иначе, но для тестирования это то, что мне нужно сделать.

enter image description here

Видишь стрелку? Я хочу, чтобы эта средняя ячейка (от px44-88) показала cell.textLabel.text в UILabel, когда это «средняя ячейка».

Я пытался использовать - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath, но у меня было так много проблем, что я решил приехать сюда, чтобы спросить, есть ли у кого-нибудь лучший способ сделать это. Я не уверен, будет ли это иметь значение или нет, но я использую NSFetchedResultsController для заполнения моего UITableView.

1 Ответ

2 голосов
/ 19 декабря 2011

UITableView является подклассом UIScrollView, поэтому, вероятно, вы можете использовать элемент UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

, чтобы определить, какая ячейка в настоящее время находится в середине.

Т.е. при условииу вас есть простая таблица без разделов, а tableView - это выход для таблицы, label - это выход для метки, и это будет работать в вашем контроллере:

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        int row = (scrollView.contentOffset.y + tableView.frame.size.height / 2) / 44;

        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];

        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        label.text = cell.textLabel.text;
}

Конечно, вам нужновыполнить некоторую прокрутку, чтобы заставить его работать;)

Вы можете использовать метод visibleCells, чтобы получить расположение видимых ячеек для неплоской таблицы и использовать его для обнаружения ячейки в середине таблицы.

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