簡體   English   中英

在普通視圖控制器中創建和填充表視圖

[英]Creating and populating table view in normal view controller

我敢打賭這個問題已經問了上千遍了,但是我找不到一個與我現在遇到的問題直接相關的問題,所以我非常感謝你們的幫助。 開始:

我的iPhone應用程序中有一個視圖控制器,該控制器在觸發后會從服務器請求JSON字符串。 當應用程序接收到JSON時,將對其進行解析,並在表視圖中填充相應的數據。 發生這種情況時,我正在顯示一個UIActivityIndicatorView來指示幕后正在發生某些事情。

我可以很好地下載和解析JSON,但是當涉及到填充表視圖時,我很迷茫。 由於我必須顯示一個完全白色的視圖,而不是一個帶有活動指示器的空表視圖,因此我沒有將視圖控制器作為UITableViewController的子類(默認情況下顯示一個空列表)。

如何使用從服務器下載的數據來創建和填充表視圖,以及如何在沒有常規的cellForRowAtIndexPathcellForRowAtIndexPath方法的情況下進行操作?

謝謝!

我只是想出了解決問題的方法。 服務器響應返回后,我分配我的表視圖,將其數據源設置為self ,然后通過實現與UITableViewController相同的方法,用返回的數據填充表視圖。 記住,正如@Deepak指出的那樣,在頭文件中采用UITableViewDatasourceUITableViewDelegate

我不明白為什么你不能使用UITableViewController子類來做

// Create UIActivityIndicatorView instance
[self.view addSubview:activityIndicatorView];

如果需要空白視圖,也可以在此處將其添加為子視圖。

這樣,如果您有興趣以當前方式繼續。 您將需要讓您的UIViewController子類采用UITableViewDatasourceUITableViewDelegate協議並實現適當的方法。 我認為您不這樣做就不能使用UITableView

編輯

很奇怪,當您取出NIB時,其表現會有所不同。 如果將行數更改為偶數1 ,則覆蓋圖將正確顯示。 這似乎是一個錯誤。

我建議您實現loadView來解決此問題,將self.viewself.tableView分開。

- (void)loadView {
    self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
    self.tableView = [[[UITableView alloc] initWithFrame:self.view.bounds] autorelease];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM