Плавающий вид поверх UITableView в RootViewController

#cocoa-touch #uitableview

#cocoa-touch #uitableview

Вопрос:

В основном UITableView для RootViewController.

Как я могу добавить представление поверх табличного представления RootViewControllers с его положением относительно экрана, а не в TableView, чтобы оно не прокручивалось вместе с ним?

Примечание — это будет индикатор выполнения, показывающий новые данные о ходе загрузки таблицы.

Ответ №1:

Это помогло бы, если бы вы опубликовали свой код, но: предположительно, вы добавляете UITableView в свой RootViewController что-то вроде этого:

 [self.view addSubview:myUITableView];
 

Просто добавьте свой плавающий вид таким же образом (т. Е. Добавьте его в свой контроллер просмотра, а не в свой UITableView). Если вы добавите его после добавления табличного представления, оно уже будет «выше» табличного представления. В противном случае вы можете вывести его на вершину с помощью чего-то вроде этого:

 [self.view bringSubviewToFront:myOverlayView];
 

Ваш вид наложения должен быть подклассом UIView , и он должен установить свое собственное backgroundColor [UIColor clearColor] значение, чтобы сделать его прозрачным. Чтобы позволить пользователю продолжать взаимодействовать с представлением таблицы (что, по-видимому, вы хотите, чтобы это произошло), в вашем подклассе overlay переопределите hitTest:withEvent: и верните представление таблицы (вместо возврата self , который является поведением по умолчанию). Это передаст все прикосновения к представлению таблицы внизу.

Комментарии:

1. Вы можете установить для userinteractionenabled значение no, и это передаст все события в базовое представление, вам не нужно переопределять hitTest

2. @jrturton: да, это намного проще, чем переопределение hitTest.

3. Поскольку я нахожусь в своем классе RootViewController, я должен написать: `[self.parentViewController.view addSubview:self.myOverlayView];`, но все просто работает.