Определите последнюю выбранную строку при возврате из detailView UITableView - PullRequest
0 голосов
/ 09 июня 2011

Хорошо, я нажимаю detailView, когда строка выбирается в UITableView. В detailView я устанавливаю данные сома и передаю их веб-сервису. Я хочу получить некоторые данные либо до того, как будет запущен detailView, либо когда он исчезнет. На основании полученных данных я установлю UIImage в качестве индикатора.

Интересно, как я могу определить indexpath.row, за которым был запущен detailView, и использовать его для установки UIImage. Это возможно?

У меня есть UISegmentedControl, который загружает два разных источника данных для UITableView.

Для тестирования я передаю indexpath.row при нажатии detailView и обратный вызов в класс UITableView вместе с логическим значением, если должен отображаться UIImage.

Но моя проблема в том, что indexpath.row равен 0, когда загружается UITableView. А при изменении источника данных вперед и назад и передаче вместе с ним indexpath.row индикатор будет отображаться в неправильных строках.

Два источника данных для таблицы:

if (index == 0) {

    dictionary = [firstArray objectAtIndex:indexPath.row];
}
else {

    dictionary = [secondArray objectAtIndex:indexPath.row]; 
}

Затем я установил индикатор для этой строки (позже будет UIImage):

if (indexPath.row == selectedIndex) {
    cell.indicator.text = @"Begin";
}

Когда подробный вид помещается в didSelectRowAtIndexPath Я передаю indexPath.row:

NSInteger rowIndex = indexPath.row;
[self.detailViewController initWithDetailsSelected:rowIndex:dictionary];

Когда подробный просмотр завершен, класс UITableView получает обратный вызов:

 - (void)processAttendanceSuccessful:(BOOL)successful:(NSInteger)_selectedIndex{

self.selectedIndex = _selectedIndex;
 }

Таким образом, на основе логического значения UIImage должен отображаться для правильной строки в UITableView. Любые предложения, как я могу пойти по этому поводу. Должно быть довольно распространенным установить какое-либо значение в детализированном представлении и отобразить некоторые данные для конкретной строки в UITableView, но довольно сложно найти какие-либо хорошие учебники для этого. Я только нахожу, как передать данные в detailView, с которым у меня нет проблем.

Заранее спасибо людям.

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Не отменяйте выбор строки в tableView:didSelectRowAtIndexPath:.Когда вы вернетесь к этому контроллеру представления, просто используйте метод indexPathForSelectedRow объекта UITableView.

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

0 голосов
/ 10 июня 2011

Я бы использовал ivar of int, используя отрицательные значения для представления нулевого выделения:

@interface MyController : UIViewController {

int lastSelection;

}
...
@end

@implementation MyController
...
- (void)initWithBlablabla{
    ...
    lastSelection = -1;
}

...

@end

Однако, я думаю, вам лучше переосмыслить свой дизайн, обращаясь к руководству по программированию KVO. В общих шаблонах MVC контроллер не является подходящим местом для хранения состояния модели.

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