Как реализовать таблицу «Обновить» и «Перезагрузить» (перефакторинг кода) - PullRequest
2 голосов
/ 04 июня 2011

У меня следующая ситуация:

1) 1 X PhotoTableViewController для отображения списка фотографий (по одной фотографии на ячейку), как это делает Instagram

2) Кнопка обновления на панели навигации PhotoTableViewController для перезагрузки таблицы (вверху справа)

3) Кнопка выбора на панели навигации PhotoTableViewController для выбора списка параметров, например, "Последние фотографии, самые популярные и т. Д.) (Вверху слева)

enter image description here

4) Ячейка «Загрузить еще» в конце списка (не более 20 фотографий) для добавления следующего набора фотографий в табличное представление.

enter image description here

Фотографии получены с сервера и представлены в виде файла JSON.

Запрос: Я считаю, что все 3 кнопки (пункты 2,3 и 4) по сути хотят сделать то же самое, то есть обновить и перезагрузить таблицу. Также я понимаю, что это обычная практика в некоторых приложениях, поэтому я хотел бы получить совет по поводу следующего

1) Как наиболее эффективно реализовать такой метод «Обновить» и «Перезагрузить» без повторения кода.

2) После того, как я нажму на каждую кнопку, мы собираемся создать «Пустую страницу» со счетчиком и показать только перезагруженную таблицу после завершения обработки. Я имею в виду отключение текущего контроллера табличного представления в точке нажатия кнопки и отодвигание нового контроллера назад после завершения обработки. Имеет ли это смысл? Или есть лучший способ сделать это?

Ответы [ 3 ]

2 голосов
/ 04 июня 2011

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

{
"cursor": {
    "currentPageIndex":0,
    "estimatedNumberOfHits":351,
    "pages":[{
        "label":"1",
        "offset":0
    },{
        "label":"2",
        "offset":10
    },{
        "label":"3",
        "offset":20
    }]
},
"details":"",
"data":[{
    "id":709,
    "modifiedOnTimestamp":1304009527000,
    "state":"California",

    "city":"Santa Monica",
}]

Создайте сетевой вызов в одном месте (на стороне iOS), который передает следующий номер результата, который вы хотите. Затем, когда вы обрабатываете JSON, они вызывают функцию reloadData для табличного представления.

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

Будет ли это работать?

-(IBAction)reloadTableOnButtonPress:(id)sender {

    // Present a dark modalView

    [tableView reloadData];

    // Trigger to dismiss modalView

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

[tableView reloadData] должен сделать свое дело.Этот метод повторно запускает все методы делегата и источника данных в таблице и соответствующим образом обновляет внешний вид таблицы.

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