Файл NIB не отображается во время выполнения - PullRequest
0 голосов
/ 07 декабря 2010

Я вытаскиваю свои волосы на этом.У меня есть NavigationController с двумя уровнями TableViews.Каждый TableView находится в своем собственном файле NIB.Первый уровень просто отображает список.После выбора ячейки пользователь переходит на второй уровень TableView с более подробным списком.Именно на этом втором уровне TableView я хочу отобразить панель поиска (на самом деле я также использую SearchDisplayController).Я добавил его в TableView, потому что хочу, чтобы панель поиска прокручивалась вместе с таблицей.

Ниже я отображаю два снимка экрана.Первый - это представление таблицы второго уровня в InterfaceBuidler.Второй - это просмотр таблицы второго уровня во время выполнения.По какой-то причине панель поиска не отображается во время выполнения.

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

Прежде чем вы спросите, если я поместил SearchBar на TableView первого уровня, он хорошо выглядит.Да, я добавляю его к самому TableView, так что это часть представления, которая должна отображаться.

Помогите!Что я делаю не так?

XIB File

Это то, что фактически отображается после нажатия XIB ...

SearchBar Doesn't Display?

Ответы [ 3 ]

1 голос
/ 09 декабря 2010

Хорошо, мне придется ответить на мой собственный вопрос. Я думал об удалении, но, возможно, это могло бы помочь кому-то еще. Я действительно выдернул свои волосы на этом. Это было не из-за чего-то, что я делал неправильно, а из-за фундаментального недопонимания того, как работает разработка iPhone.

В двух словах, проблема была в этой строке кода, которая создала экземпляр TableViewController:

self.downloadDetailViewController = [[DownloadDetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];

Когда вы используете XCode для создания нового класса, вы можете использовать следующее:

"Добавить -> Новый файл -> Сенсорный класс Cocoa -> Подкласс UIViewController -> UITableViewController подкласс И С XIB для пользовательского интерфейса "

Проблема в том, что NIB не имеет абсолютно никакого отношения к UITableViewController, пока вы не скажете своему коду использовать его. Мне кажется, что это ошибка в XCode или, по крайней мере, что-то нелогичное. Когда среда разработки создает все три файла вместе, имело бы смысл только работать вместе, но это не так.

Вместо этого решение состоит в том, чтобы изменить строку кода следующим образом:

self.downloadDetailViewController = [[DownloadDetailTableViewController alloc] initWithNibName:@"SecondaryView" bundle:[NSBundle mainBundle]];

Надеюсь, это может помочь кому-то еще ...

0 голосов
/ 29 июня 2011

Вы также можете установить свойство Nib Name в вашем Download View Controller под контроллером панели вкладок, фактически, в сочетании с установкой класса с вашим именем класса, вы автоматически создадите представление, и вам не нужно создавать его вручную. это.

0 голосов
/ 07 декабря 2010

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

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

...