2011-03-18 91 views
0

我一直試圖在實用程序應用程序中有兩個表,但我遇到問題;當我創建兩個代表和兩個數據源時,出現錯誤。有沒有辦法讓一個班裏有多個代表?如何在實用程序應用程序中創建兩個表視圖?

+0

你必須要更加具體。將您的代碼修剪成可輕鬆發佈的示例,以便我們可以看到您已經嘗試過的內容,併發布您收到的實際錯誤消息。否則,我們幾乎沒有希望能夠幫助你。 – Anomie 2011-03-18 03:35:54

回答

0

實際上,您不能在同一個視圖控制器中放置兩個表的兩個代表和兩個數據源。

您可以使用標誌或隱藏的UILabel,其中您可以根據標誌或標籤的值設置唯一值並訪問數據源和委託。

例如:

如果我有2個表,一個用於購買,一個用於銷售

我將設置的UILabel命名說tableIdentifier

tableIdentifier.text = @"Buy"; 

當我想加載購買

,同樣設置

tableIdentifier.text = @"Sale"; 

當我要加載

現在只要數據源和委託方法而言,這是怎麼一回事呢:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    int rows = 0; 
     if([tableIdentifier.text isEqualToString:@"Buy"]) 
     { 
      rows = //Your row count for Buy; 
     } 
     else if([tableIdentifier.text isEqualToString:@"Sale"]) 
     { 
      rows = //Your row count for Sale; 
     } 

    return rows; 
} 

類似地,它適用於基於標籤或標誌值的每個委託和數據源方法。

注:

如果你用,因爲我已經如上圖所示,那麼你需要outlet該標籤在廈門國際銀行和@synthesize標籤隱藏的標籤,否則其價值將在如果的情況下返回null標籤該值不被保留。

希望這有助於你

編輯:

在這種情況下,你可以算作[plist1Array count] + [plist2Array count]numberOfRowsInSection:方法

cellForRowAtIndexPath:方法,你可以檢查indexPath。基於行和負荷數據

if(indexPath.row <=[plist1Array count]) 
{ 
    //Load data in cell.textLabel.text From `plist1Array` 
} 
else if(indexPath.row >[plist1Array count] && indexPath.row <[plist2Array count]) 
{ 
    //Load data in cell.textLabel.text From `plist2Array` 
} 

編輯-1:

如果你願意,你可以只顯示他們在同一個表的不同部分,而不是向他們展示在兩個不同的表像

numberOfRowsInSection:方法

int j = 0; 
if(indexPath.section == 0) 
{ 
     j=[plist1Array count]; 
} 
else if(indexPath.section == 1) 
{ 
     j=[plist2Array count]; 
} 
return j; 

而在cellForRowAtIndexPath:方法

if(indexPath.section == 0) 
{ 
    //Load data in cell.textLabel.text From `plist1Array` 
} 
else if(indexPath.section == 1) 
{ 
    //Load data in cell.textLabel.text From `plist2Array` 
} 

希望這有助於

+0

@PARTH:我錯過了什麼,導致你把自己的答案? – Jhaliya 2011-03-18 03:55:58

+0

感謝您的快速回復......其實我在視圖中有兩個表格視圖,每個表格都是從不同的plists中獲取數據。我想在程序加載的同時顯示兩個數據。我只知道如何將它顯示在一個表格中,而不是在兩個表格中。因爲我只使用一個委託和數據源,不知道如何使用多個委託。 – Fadel 2011-03-18 04:02:32

+0

@Jhaliya:實際上可能是你沒有錯過任何東西,但是當你發佈它的時候我正在輸入我的答案。我可以問你關於這個鏈接的相同問題:http://stackoverflow.com/questions/5343969/preventing-uitableview-from-scrolling/5344072#5344072但無論如何離開它,因爲沒有爭論點。 – 2011-03-18 04:33:19

1

保持您的委託和數據源功能的單一出現。

只要使用下面的方法,並放在每個函數(Just Sample)的開頭。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
     if(myTableOne == tableView) 
     { 
      return 5; 
     } 
     else if(myTableSecond == tableView) 
     { 
      return 10; 
     } 
} 
相關問題