Вставить изображение в верхней части UITableView при использовании UINavigationController? - PullRequest
2 голосов
/ 09 марта 2011

У меня есть UINavigationController и UITableView в моем MainWindow.xib.Я пытаюсь вставить неприкосновенное / неподвижное изображение в верхней части экрана.(Я не хочу просто изменять фон UINavigationBar, поскольку, как я понял, высота UINavigationBar не может быть произвольно увеличена.)

Поскольку это корневое представление, его поведение контролируется моим RootViewController.,Когда представление загружается, я скрываю панель навигации, используя self.navigationController.navigationBarHidden = YES;

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

Наивно-рассматриваемые возможности:

  • Включить представление в другое представление, верхняя часть которого содержит изображение?
  • Наложить маску изображения в верхней части экрана?

(нарушение HIGкто-нибудь?)

Ответы [ 2 ]

1 голос
/ 09 марта 2011

Если ваш контроллер представления является UITableViewController, вы не можете легко добавить другое представление, потому что tableViewController просто управляет одним представлением, которое является UITableView. Вместо этого я рекомендую использовать простой UIViewController, где вы добавляете UIView для вашего вида сверху и UITableView для вашего контента в качестве подпредставлений к основному viewController.view. Затем внедрите протоколы UITableViewDelegate и UITableViewDataSource в свой UIViewController.

1 голос
/ 09 марта 2011

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

UIViewController *middleViewController = [[UIViewController alloc] init];
[[middleViewController view] addSubview:tableView];
[[middleViewController view] addSubview:staticImageView];
...
[navigationController initWithRootViewController:middleViewController];

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

...