2009-09-08 3 views
1

У меня есть проект для начинающих iPhone. У меня есть TableView, который является только списком с множеством записей и небольшим UiView внизу. См. Рис.Как предотвратить UIView от скольжения вниз под TableView?

Проблема в том, что UiView по существу становится частью списка и появляется только при прокрутке вниз до последнего элемента в TableView.

Я хочу, чтобы UiView был закреплен на дне и никогда не двигался. Я просмотрел интерфейс Interface Builder и ничего не могу найти (хотя в его защите я полный noob для iPhone dev). Как я могу сделать трюк?

alt text http://www.sqleffects.com/mystuff/ibissue.jpg

ответ

0

Суть в том, что если вы создаете свой проект на основе шаблона навигации, вы не можете изменять размер периода UiTableView ,

Чтобы сделать то, что я хочу, я в основном должен начинать с нуля и выбирать шаблон на основе View или Window и вручную удалять UiTableView.

1

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

Если вы удалите UIView из TableView, масштабируйте TableView, чтобы освободить место для UIView и немного больше, и поместите свой UIView туда, где вы хотите, вероятно, он будет добавлен в супервизор TableView. Затем вы можете изменить размер TableView на правильный размер.

+0

Я попытался это сделать, но TableView не кажется изменчивым, а текстовые окна Высота и Ширина окна Inspector недоступны. – AngryHacker

+0

Вы можете попробовать сначала удалить * оба * TableView и UIView, а затем сначала добавить UIView (и дать ему правильную позицию размера +), а затем правильно установить позицию UITableView и изменить его размер так, чтобы он не перекрывал UIView. Возможно, вам придется подключить IBOutlet в владельце файла к новому TableView. Вы можете попытаться удалить как TableView, так и UIView, а затем сначала добавить UIView, а второй вид таблицы. Интерфейс Builder, вероятно, не скроет – mrueg

3

Хорошо, что вам нужно это UIView, который содержит

  1. в UIView, который действует как TableViewController и, таким образом, должен реализовывать протоколы UITableViewDelegate и UITableViewDataSource (но он не должен быть производным от UITableViewController непосредственно, так как при этом в UITableView автоматически занимают весь размер экрана (кроме панелей инструментов, NavBars и/или tabbars))
  2. другой UIView, тот, который вы хотели бы разместить на дне

по при этом вы можете создать UITableView в IB (не UITableViewController!) и подключить его к свойству UITableView в вашем UIView (тот, который указан в 1.)

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

+0

Вы должны сделать скринкаст и опубликовать его на youtube, так что noobs, как я, могут лучше понять его. – AngryHacker

2

Чтобы отладить ответ gabtub, UIView, содержащий ваш вид в таблице и вид снизу, не должен реализовывать методы UITableViewDelegate и UITableViewDataSource.

Поскольку это похоже на создание с контроллером вида, я бы сделал ваш основной контроллер представлений подклассом UIViewController (вместо использования UITableViewController). Затем вы можете добавить UITableView и UIView в экземпляр представления UIViewController.

Я бы сделал ваш подкласс UIViewController реализованными UITableViewDelegate и UITableViewDataSource протоколами - вы получите нечто похожее (по коду) на ваш старый подкласс UITableViewController, но его свойство view будет основным UIView вместо этого из экземпляра UITableView (если вы выкалываете в отладчике, вы можете видеть, что представление [UITableViewController] и [UITableViewController tableView] возвращают один и тот же объект)

Одним из преимуществ по сравнению с предложением gabtub является то, что он избавляет вас от создания одноразового использования, с подкласса UIView, так как вы, вероятно, уже получили одноразовый подкласс UIViewController (или ранее имел одноразовый подкласс UITableViewController).

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