2013-05-13 6 views
0

У меня есть UITableViewController, который успешно отображает данные таблицы, полученные из объекта CoreData.Остановка навигационной панели от прокрутки со столом

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

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

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

Здесь используйте код, чтобы установить панель навигации:

- (void)viewDidLoad 
{ 

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0, 1024,44)]; 
UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Observation details"]; 
[navBar pushNavigationItem:navItem animated:NO]; 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(backButton)]; 
navItem.leftBarButtonItem = backButton; 
UIBarButtonItem *detailsButton = [[UIBarButtonItem alloc] initWithTitle:@"Observation Details" style:UIBarButtonItemStyleBordered target:self action:@selector(detailsButton)]; 
navItem.rightBarButtonItem = detailsButton; 
[self.view addSubview:navBar]; 
} 
+0

Используете ли вы конструктор интерфейса? – Groot

+0

Использование раскадровки ?? Должен ли я делать это программно? – RGriffiths

+0

Как вы добавили эту панель навигации и какой тип элемента пользовательского интерфейса? Стандартная панель навигации, предоставляемая системой, не должна вообще прокручиваться. –

ответ

2

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

Чтобы сделать то, что вы пытаетесь сделать, самым простым способом является использование контроллера навигации с представлением таблицы в качестве его rootTableView.

myNavController = [[UINavigationController alloc] initWithRootViewController:myVC]; 

[self presentViewController:myNavController ... 

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

+0

@RichardGriffiths: Отправьте код, как вы это делаете программным путем. – Rakesh

+0

@ Richard, если вы используете Story Board, вам нужно включить контроллер навигации. Это очень просто. Если вы хотите сделать это программно, вы должны объявить переменную или свойство, чтобы сохранить навигационный контроллер. Я должен отредактировать свой ответ, чтобы показать вам, как это сделать. – Gabriel

+0

Большое вам спасибо за помощь. Вы можете увидеть ответ выше. У меня теперь есть контроллер Nav, в котором отображается таблица, но по-прежнему не удается заставить панель навигации вести себя! – RGriffiths

1

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

Создайте новый пустой вид с отдельным контроллером. Добавьте два представления в этот вид вида контейнера типа. Эти представления предназначены для отображения представлений, имеющих свои собственные контроллеры представлений. Один из этих контейнеров находится сверху и имеет размер панели навигации и содержит панель навигации и т. Д. Для этого вы можете создать отдельный контроллер вида. Однако я не вижу причин, почему это не может быть одним и тем же контроллером представления. (Владелец файла в IB) Это может быть отдельный экземпляр/класс. Это зависит от вас.

Остальное изображение занято вторым видом контейнера. Этот номер содержит UITableView, для которого UITableViewController (-класс) является владельцем файла.

Если вы больше не знакомы с иерархией представления и иерархией диспетчера представлений, вам не следует ломаться с шаблоном (как указано по умолчанию sceleton code и tutorials и т. Д.), Имеющим отношение 1: 1 между контроллерами табличного представления и представлениями таблиц , A UITableViewController имеет свойство view, как и каждый UIViewController. Но для UITableViewController это должно быть UITableView и ничего больше. Стандарт UITableViewController не может иметь дело с UIView как свойство view, которое содержит вид таблицы и другие виды в виде братьев и сестер. Плюс это не очень хорошая идея добавить больше представлений в представление таблицы относительно его поведения прокрутки и т. Д.

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

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

+0

Я очень ценю то время, которое вы вложили в это - спасибо. Я пытаюсь использовать метод Navigation Controller, так как все говорят, что это так просто. У меня есть рабочий стол, но по какой-то причине панель навигации вообще не отображается, когда приложение запущено. Я новичок в навигационных контроллерах, и я не уверен в необходимости двух видов (одна навигация и одна таблица). Я читаю об этом, но ничего не получаю. Очень плохой интернет здесь означает отсутствие доступа к видео. Во всяком случае, может быть какая-то простая причина, почему панель навигации не отображается? – RGriffiths

+0

Я заметил теперь, что, как только я свяжу таблицу с кнопкой из предыдущего представления, используя segue, панель навигации на столе просто исчезает !! – RGriffiths

+0

Очень ценю вашу помощь. Смотри ниже. – RGriffiths

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

  • Нет связанных вопросов^_^