Вопрос о дизайне iOS: как следует переключаться между днями в виде таблицы? - PullRequest
2 голосов
/ 22 ноября 2010

У меня плохой случай паралича анализа по этому поводу, поэтому я решил открыть его до SO:

У меня есть табличное представление, содержимое которого представляет действия, которые происходили наданный день.Когда приложение загружается, сегодняшние данные загружаются, анализируются (как центральным синглтоном), так и отображаются.Достаточно просто, и это прекрасно работает.

Я бы хотел добавить возможность переходить вперед / назад между днями, используя какой-то контроль сверху.Прекрасным примером может служить дневное представление приложения Календарь iOS.

Или, в качестве альтернативы, я мог бы инициировать и выдвигать новые представления с помощью панели навигации и navigationItem.rightBarButtonItem & navigationItem.leftBarButtonItem.

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

Ответы [ 2 ]

4 голосов
/ 28 ноября 2010

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

Во-первых, я бы представил метод на вашем контроллере табличного представления, где вы можете установить день для отображенияданные для:

- (void)setDayToDisplayDataFor:(NSDate *)date animated:(BOOL)animated;

Я выбрал NSDate там, и вы можете, например, показать данные за следующие 24 часа, начиная с этой даты.Или вы можете выбрать другой метод, который подходит вам и вашей модели данных.Альтернативой может быть целое число, представляющее количество дней для просмотра в обратном направлении.

Затем я бы разработал собственный элемент управления (подкласс UIView) с двумя кнопками со стрелками влево / вправо на каждом конце и датой в середине,Вы можете либо вставить это в заголовок табличного представления, чтобы оно прокручивалось за пределы экрана, либо оставить его полностью над табличным представлением, чтобы оно оставалось там при прокрутке.Примерно так:

alt text

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

Орган управления также должен вызвать делегата, чтобы сообщить ему об изменении даты.В этом случае делегат - это просто ваш контроллер табличного представления.Поэтому, когда пользователь нажимает кнопку, вы получаете новую дату из пользовательского элемента управления датой и вызываете свой метод setDayToDisplayDataFor:animated:, чтобы отобразить обновленные данные.Вы также можете анимировать это изменение табличного представления, если хотите.

0 голосов
/ 30 ноября 2010

Я думаю, что ответ Майка хороший.Я бы сказал, что ваше представление контроллера представления может содержать два отдельных UITableView (они оба могут использовать ваш контроллер представления в качестве делегата ...).Причиной этого могло бы стать повышение вашей способности переходить между двумя отдельными представлениями в день смены.

Ваша иерархия представлений может быть:

YourCustomViewController <UITableViewDelegate, UTableViewDataSource, CustomDatePickerDelegate>
    view
      date-picker-control-view
      tableview1
      tableview2

При таком расположении вы можете использовать встроенную анимацию перехода представления для переключения между tableview1 и tableview2.

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