我們在iOS上的tableView上方顯示視圖時出現問題。我們的方法 是創建一個UIView,它是UIViewController的一個子類的子視圖,發送 它到後面,然後將它帶到didSelectRowAtIndexPath的前面。 我們使用XIB創建用戶界面。視圖層次是像 這樣的:UIView UITableView上方沒有顯示 - iOS
查看
- UIView的( 「載入中...」 視圖)
- - 的UILabel( 「載入中...」)
- - UIActivityIndicatorView
- UITableView的
- 的UILabel
這是我們正在做的嘗試,以顯示 「加載」 觀點:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Create a request to the server based on the user's selection in the table view
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
NSError *err;
// Show the "loading..." message in front of all the other views.
[self.view bringViewToFront:self.loadingView];
[self.loadingWheel startAnimating];
// Make the request
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&err];
// Stop animating the activity indicator.
[loadingWheel stopAnimating];
// other stuff...
}
每當我們在 XIB中的所有其他視圖的前面離開「加載」視圖時,我們可以看到它看起來像我們想要的。但是,當我們在後面(根據上面的視圖層次)加載 視圖,然後嘗試將它放到前面 時,視圖將永不顯示。打印出self.view.subviews
表明我們的 加載視圖實際上在視圖層次結構中。有趣的是,如果我們嘗試在didSelectRowAtIndexPath內更改我們視圖中的其他內容(例如, 更改已在視圖中顯示的標籤的背景色), 更改從不在模擬器上顯示。
現在我們全部拿出了同步請求。雖然我們代碼的最終評論中提到的「其他內容」涉及發佈導致一些異步請求的通知,但我們的「加載」視圖仍然不會顯示。 – Peter 2012-07-18 18:29:33
這對我來說很好。我只保留了兩行,將subview放在前面並開始動畫,並將'bringViewToFront:'改成'bringSubviewToFront:'(這是正確的方法名稱)。檢查一切是否與XIB文件連接,即確保self.view,self.loadingView等連接到正確的對象。 – 2012-07-19 08:36:06