Subview появляется позади tableview
Когда я добавляю подпредставление в свой UITableViewController, оно кажется под таблицей. Возможно, я неправильно загружаю свое подпредставление или звоню addSubview
в неправильном месте. Подвид, на который я ссылаюсь, это красная область над панелью вкладок, которая также содержит кнопку "Нажмите меня":
http://i43.tinypic.com/30275gg.jpg
Вы можете видеть, что клеточные линии перекрывают друг друга. Вот где я добавляю подпредставление в моем TableViewController:
- (void)viewDidLoad {
[super viewDidLoad];
CGRect hRect = CGRectMake(0, 170, 320, 480);
HomeScreenOverlayView *homeView = [[HomeScreenOverlayView alloc] initWithFrame:hRect];
[self.tableView addSubview:homeView];
[homeView release];
}
Есть идеи? Спасибо!
3 ответа
Когда вы вызываете addSubview, это, вероятно, первое представление, добавленное к представлению таблицы. Позже все ячейки и виды поддержки будут добавлены поверх вашего представления.
Лучше всего создать пустое представление и добавить к нему как табличное представление, так и представление с наложением, убедившись, что представление с наложением находится над представлением таблицы.
Представления выполняют 3 роли рисования, взаимодействия и макета. Хорошо иметь представление, которое выполняет только одну из этих ролей.
Я сам столкнулся с этой проблемой и решил ее, не добавляя представление к таблице, а добавляя представление к суперпредставлению таблицы.
UIView *viewToAdd = [[UIView alloc] initWithFrame: self.view.frame];
[self.view.superview addSubview: viewToAdd];
Это особенно полезно, когда вы хотите замаскировать всю таблицу (например, экраны загрузки).
NB Я обычно добавляю это к viewWillAppear: в жизненном цикле представления.
Ты можешь использовать - (void)sendSubviewToBack:(UIView *)view
или же - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index
, addSubview
всегда ставит новый взгляд вперед.
РЕДАКТИРОВАТЬ: Извините, неправильно прочитал вопрос, похоже, вы хотите, чтобы подпредставление было впереди.