UISegmentedControl под UINavigationBar, без прокрутки - PullRequest
0 голосов
/ 10 августа 2011

Хорошо, так что я был на этой проблеме примерно один день или около того, кажется, довольно распространенная проблема среди новых разработчиков iOS. Тем не менее, Ive поиск Google, Appledev, переполнение стека и т. Д.

Однако у меня были проблемы с поиском правильного решения. Нет, где есть четкие ответы.

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

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

Я пытаюсь сделать его статичным и неуправляемым, как панель навигации.

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

Хотя, я знаю, что это как-то связано с помещением представления в представление?

Если у кого-нибудь есть свободное время, чтобы написать краткое, но подробное руководство, я был бы очень благодарен.

редактировать

Попытка 1: в IB ...

Посмотреть

-> Tableview (просмотр таблицы в родительском представлении)

создает эту ошибку

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "EventsViewController" nib but didn't get a UITableView.'

Ответы [ 2 ]

1 голос
/ 10 августа 2011

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

Это новое представление также может быть загружено как модальное представление или как новое представление для элемента управления навигацией или как подпредставление для текущего представления. (звонок оставлен вам).

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

UIView
      --- Segmented control(you can wrap this into a seperate UIView
      --- UITableView (it can also be wrapped into a seperate uiview )
      --- Other widgets

Теперь вы можете иметь один контроллер вида, управляющий вышеупомянутым Main UIView. Надеюсь, это поможет вам. Я использовал аналогичный подход в одном из моих приложений.

0 голосов
/ 10 августа 2011

То, что вы можете сделать, - это иметь сегментированный элемент управления, в основном изменяющий источник данных таблицы. В основном, установите действие, поражающее любой сегмент, как [myTableView reloadData];. Затем в ваших методах источника данных поместите несколько операторов if. Например, под numberOfRowsInSection, скажите: если (mySegmentedControl.selectedSegmentIndex = 1) // 2-я кнопка, используйте этот массив. Получите, что я имею в виду? Таким образом, вы можете использовать один контроллер представления с двумя (на самом деле одной) таблицей.

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