UITableViewController внутри UIScrollView с горизонтальной подкачкой

Это ситуация:

Мне нужна горизонтальная прокрутка и просмотр таблиц внутри каждой страницы. Это что-то вроде новостного приложения, оно должно отображать новости из разных категорий, при прокрутке в одном горизонтальном направлении, а внутри одной категории должно отображаться около 30 новостей, конечно, с вертикальной прокруткой.

Я успешно сделал то, что мне нужно, но...

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

UINavigationController
|__ UIViewController, which contains ScrollView and PageControl
    |__ UITableViewController, which holds data in rows, and is displayed inside parent, which is actually ScollView

Я знаю, что это не идеальное решение, но, по крайней мере, оно работает. В качестве основы я использовал код Apple и учебник для PageScroll, который можно найти по этой ссылке. Вместо простого viewController для добавления в ScrollView я использовал TableViewController, поэтому в основном я добавляю tableController.tableView в ScrollView.

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

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

Заранее большое спасибо.

2 ответа

Решение

Я сделал нечто подобное несколько месяцев назад, и это было так:

  • UINavigationController
    • UIViewController с UIScrollView
      • UIViewController с UITableView внутри (я использую это, потому что я просто ненавижу UITablewViewController)

Я следовал документации Apple по созданию пользовательских контейнеров. В разделе видео на WWDC 2011 есть отличное видео, если я не ошибаюсь. Я с гордостью могу сказать, что код действительно чистый и простой для понимания.


Ответ 1.0

Во-первых, вам удалось получить правильную обработку ориентации tableView, без какого-либо взлома, или вы не используете его?

Нет, в этом случае я не сделал, но я уверен, что смог бы сделать это без каких-либо проблем. Видите ли, большинство проблем возникает, когда вы просто [self.view addSubView:newViewController.view];, Вы просто добавляете UIViewвся логика вращения обрабатывается newViewController, а не в контроллере, где UIView будет.

Другое дело, если я попытаюсь реализовать, скажем, GridView или что-то в этом роде, для iPad обработка ориентации и анимация станут очень уродливыми.

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

  1. Я использовал UIViewController с UITableView чтобы я мог получить все вкусности от dequeueReusableCellWithIdentifier:создание заголовков разделов, верхних и нижних колонтитулов таблиц и т. д. Я просто считаю, что независимо от того, что я буду делать с UIScrollView UITableView всегда будет более оптимизированным. Как UITableViewCell's Я просто использовал держатель с 3 квадратами, каждый из которых был картиной. (мое приложение было витриной с фотографиями)
Другие вопросы по тегам