2011-03-18 38 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; 
     } 
} 
相关问题