2012-01-04 4 views
0

В моем приложении iPhone я хотел бы перезагрузить представление таблицы, когда список элементов, используемых для его заполнения (этот список является свойством NSMutableArray для приложения делегат).
Каков наилучший способ сделать это?
Сначала я, хотя и из NSTimer, но думаю, что это не правильный путь ... May KVO pattern делает трюк?Перезагрузите представление таблицы UITableController при изменении свойства делегирования приложения

ответ

1

KVO - это путь, но вы должны убедиться, что внесите изменения в массив, используя соответствующие аксессоры (а), чтобы механизм KVC/KVO работал только.

Как минимум, измените свойство NSMutableArray с использованием измененного прокси-сервера, возвращаемого mutableArrayValueForKey:. Apple's documentation suggests that you go further:

Вам настоятельно рекомендуется реализовать эти изменчивые аксессор скорее , чем полагаться на аксессору, который возвращает изменяемый набор непосредственно. Изменчивые аксессоры намного эффективнее при внесении изменений в данные в связи.

Для того, чтобы иметь ключ-значение кодирования уступчивый изменяемый заказал ко-многим необходимо реализовать следующие методы:

  • -insertObject:in<Key>AtIndex: или -insert<Key>:atIndexes:. По крайней мере, один из этих методов должен быть реализован. Они аналогичны Методам NSMutableArray insertObject:atIndex: и insertObjects:atIndexes:.

  • -removeObjectFrom<Key>AtIndex: или -remove<Key>AtIndexes:. По крайней мере, один из этих методов должен быть реализован. Эти методы соответствуют методам NSMutableArray removeObjectAtIndex: и removeObjectsAtIndexes: соответственно.

  • -replaceObjectIn<Key>AtIndex:withObject: или -replace<Key>AtIndexes:with<Key>:. Необязательный. Внедрение, если бенчмаркинг указывает на то, что производительность является проблемой.

Метод -insertObject:in<Key>AtIndex: передается объект вставки, а также NSUInteger, что указывает индекс, где он должен быть вставлен . Метод -insert<Key>:atIndexes: вставляет массив из объектов в коллекцию по индексам, указанным принятыми NSIndexSet. Вам нужно только реализовать один из этих двух методов .

Смежные вопросы