Выделение и отмена выбора UINavigationController - PullRequest
0 голосов
/ 08 января 2012

Большинство приложений для iPhone, которые я использую, имеют очень тонкое, но гладкое поведение при использовании потока навигации.Когда вы вернетесь к предыдущему виду, выбранный элемент сразу снимется с выбора, поэтому вы получите краткую отмену выделения.Это говорит пользователю, какой элемент он только что отредактировал / просмотрел.

Моя проблема в том, что мое собственное приложение не демонстрирует такое поведение.Я установил его в xcode 4.2, используя в основном segues, но с некоторым кодом позади.

Я сузил его до того факта, что я использую reloadData в viewWillAppear.Но мне нужно перезагрузить его по возвращении из модального режима, который я использую для добавления элементов в список.

Как / где я должен перезагрузить свой список, чтобы он включал новый элемент, но не мешал работе шаблона отмены выделения / выделения?

Ответы [ 3 ]

0 голосов
/ 15 января 2012

Мне нужно перезагрузить его по возвращении из модального режима, который я использую для добавления элементов в список.

Перезагрузка всей таблицы концептуально проста, но лучшим решением может бытьвызовите -insertRowsAtIndexPaths:withRowAnimation:, чтобы добавить новые строки в таблицу.Это должно позволить анимации отмены выбора проходить нормально, и вы также можете получить хорошую анимацию при вставке новых строк.

0 голосов
/ 20 января 2012

Выполните эти шаги.

Объявите значение int "selectedCell" в файле .h и присвойте -1 в viewDidLoad: метод. В

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

метод, до

if (indexPath.row==selectedCell){
cell.selected=YES;
}

А в

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

метод, до

selectedCell=indexPath.row;

Выбранная строка будет выделена всегда.

0 голосов
/ 15 января 2012

Я предполагаю, что для отмены выбора используется длительность анимации по умолчанию 0.25f, так почему бы не использовать viewDidAppear::

[self.tableView performSelector:@(reloadData) withObject:nil afterDelay:0.25f];

Я уверен, что будет лучший способ, хотя

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