[英]How to add UIView over UITableView programmatically
我想在我的tableViewController
類和NavigationBar下的表視圖上添加一個UIView
。 如果我這樣添加它:
[self.view addSubview:self.manualView];
它位於UITableView上方(實際上,我希望它們位於相同的z-index上)。 我也想在用戶按下某個按鈕時以編程方式刪除UIView。
UITableViewController's
視圖是UITableView
,因此向其添加子視圖可能不是您想要的。 我認為最好的解決方案是改用UIViewController
。 如果給它一個覆蓋整個( UIView
)視圖的tableView,它的行為就像UITableViewController
一樣。
然后,使用addSubview
(和removeSubview
建議的removeSubview)執行的代碼就可以正常工作。
只要在添加表視圖之后添加視圖,堆棧就可以自理。
解決此問題有兩種方法。 天真(創建視圖並將其添加到子視圖):
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
view.backgroundColor = [UIColor blackColor];
[self.view addSubview:view];
這引入了與布局放置和空間沖突有關的許多問題。
更好的解決方案:通過以下方式返回表中相應部分的頁眉視圖或頁腳視圖:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
此方法是UITableViewController默認符合的UITableViewDelegate協議的一部分。
您可以使用[self.view removeSubview:self.manualView];
響應用戶按下按鈕。 而且,您不能使兩個視圖具有相同的Z-index,但是可以通過參考Apple的UIView文檔中的 “ 管理視圖層次結構”部分來更改視圖的深度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.