2011-04-21 26 views
0

我在同一個視圖中有2個UITableView,我的問題是如何用viewDidLoad方法中的不同數據填充它們?謝謝。在同一視圖中填充兩個UITableView

+2

首先,您不要在viewDidLoad中填充數據。您使用tableView的數據源和委託回調。其次,你的問題已經在你的最後一篇文章中回答了:http://stackoverflow.com/questions/5747889/two-uitableview-in-the-same-view – Christian 2011-04-21 20:39:41

+0

在我的情況下,我使用了一個plist文件和所有教程,使用這種方法!我如何使用不同的plist文件來填充它們? – vince 2011-04-21 20:46:23

回答

0

你填充它們在

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

,並在該函數可以比較的tableView,看看它是什麼表,並加載相應的數據,該表。

//Assume the following property 
@property (nonatomic, retain) NSDictionary *myData; 

將其添加到代碼文件

- (NSDictionary) myData 
{ 
    if (myData == nil) //Notice I am accessing the variable, not the property accessor. 
    { 
     NSString *filePath=[[NSBundle mainBundle] pathForResource:@"someName" ofType:@"plist"]; 
     myData = [[NSDictionary dictionaryWithContentsOfFile:filePath] retain]; 
    } 
    return myData; 
} 

那麼當你訪問self.myData財產,如果它不是已經打開,將打開。

+0

好吧,我可以使用if(tableView == table1)... else,但我不知道如何使用plist文件來填充它們? – vince 2011-04-21 20:48:01

+0

將plist加載到NSDictionary或NSArray中...您需要確定關閉NSIndexPath如何填充單元格。 – 2011-04-21 22:15:22

0

要回答你的問題的plist中的一部分:

NSString *filePath=[[[NSBundle mainBundle] pathForResource:@"someName" ofType:@"plist"] retain]; 
NSDictionary *dict = [[NSDictionary dictionaryWithContentsOfFile:filePath] retain]; 

所以只使用這兩個,一個爲每個表,然後只是有兩個的tableView,因爲它似乎你已經明白了。

+0

好的,謝謝,但在哪裏呢?在哪種方法?一般我把它放在viewDidLoad方法中,但似乎其他有經驗的程序員說它是錯的! – vince 2011-04-21 23:06:25

+0

將延遲加載方法添加到屬性。我會將其添加到我的答案中。 – 2011-04-22 01:04:37

+0

我不知道爲什麼這個人是反「viewDidLoad」 - 我一定會把它放在'viewDidLoad'中,我有過去的應用程序,它工作正常。 – Andrew 2011-04-22 14:11:07

0

所有的委託和數據源協議方法總是傳遞一個指向它們被調用的tablesView的指針。只要做一個if來檢查每種方法中的含義。

相關問題