Это на самом деле вполне возможно и просто - для этого требуется просто переделка. Я столкнулся с подобной ситуацией и закодировал это, чтобы позволить мне добавлять экраны загрузки поверх моих табличных представлений. Этот подход также позволяет использовать статические ячейки таблицы с вашим собственным контентом.
Если ваш контроллер является UITableViewController в раскадровке или XIB, и вы хотите переназначить себя.вид на стандартный UIView, сохраняя существующий вид таблицы:
Добавьте эти переменные экземпляра в файл заголовка:
IBOutlet UITableView *tableViewReference; // to keep a reference to the tableview
UIView *viewReference; // a reference to the new background view
В вашем раскадровки или XIB файла: Подключите tableView
в UITableViewController
к переменная tableViewReference
.
Затем в файле реализации:
// Override the default accessors of the tableview and view
- (UITableView*)tableView { return tableViewReference; }
- (UIView*)view { return viewReference; }
- (void)viewDidLoad
{
[super viewDidLoad];
// instantiate the new self.view, similar to the tableview
viewReference = [[UIView alloc] initWithFrame:tableViewReference.frame];
[viewReference setBackgroundColor:tableViewReference.backgroundColor];
viewReference.autoresizingMask = tableViewReference.autoresizingMask;
// add it as a subview
[viewReference addSubview:tableViewReference];
/* remainder of viewDidLoad */
}
Хотя это может показаться странным, UITableViewController делает много изворотливого материала со ссылками за кулисами. Вам нужно дождаться viewDidLoad, чтобы сделать своп. После этого точки доступа будут указывать на правильные UIView
и UITableView
.
Использование: Что-то вроде
[self.view addSubview:myView];
добавит UIView myView
перед табличным, без myView
прокрутки с содержанием табличного представления.
Примечание: Этот ответ редактировался после того, как было указано, что решение содержит пограничный парадоксальный код. UITableViewController делает странные вещи для ссылок, которые он имеет. Более тщательное тестирование получило этот более простой ответ :)
Вы пытались использовать 'aboveSubview: self.view'? Я не говорю, что это решит вашу проблему, но похоже, что она избавится от сообщения об ошибке, которое вы получаете. –
Да, я попробовал это. Верно, что я потерял предупреждение, но он все равно не отображает представление. Я отредактирую свой пост, хотя. – user558096
Простой метод задает рамки progVIew, и я уверен, что он может работать. Любое ограничение не будет работать, в том числе VFL – BollMose