2011-11-02 82 views
0

任何人都可以告訴我如何在單個視圖中顯示多個UITableViews嗎?如何在單個視圖中實現多個uitableview?

+1

如果有人不知道的話請不要降低聲望。因爲我處於這種情況下需要在單個視圖中實現兩個uitableview。可能是我的問題是錯的,但我的需求是正確的。 – sandy

+0

你想要兩個表視圖一起看或一個一個(一個隱藏和一個可見)..? – mAc

+0

兩個表視圖的含義?你是指具有不同數據的同一表格視圖,還是兩個不同的表格與不同的數據一起出現? – Maulik

回答

2

要顯示的多個的UITableView在單個視圖中,可以實例化多個的UITableView並將其添加爲子視圖,是這樣的:使用不同的幀/拖動

UITableView *tb1 = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 200, 100) style:UITableViewStylePlain]; 
UITableView *tb2 = [[UITableView alloc] initWithFrame:CGRectMake(0, 100, 200, 100) style:UITableViewStylePlain]; 
UITableView *tb3 = [[UITableView alloc] initWithFrame:CGRectMake(0, 200, 200, 100) style:UITableViewStylePlain]; 

[self.view addSubview:tb1]; 
[self.view addSubview:tb2]; 
[self.view addSubview:tb3]; 

[tb1 release]; 
[tb2 release]; 
[tb3 release]; 
4

1)畫出不同表視圖和下降的表格視圖不同的尺寸,如果使用XiB。

2)符合表視圖協議照常並給予實施委託/數據源的方法

3)在委託/數據源的方法決定哪個表視圖,它被稱爲使用表視圖的對象。例如:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    if(tableView == tableView1) 
{ 
     //Do this 
} 
else if(tableView == tableView2) 
{ 
     //Do that 
} 
} 
+1

這樣做。這意味着你有「tableView1」和「tableView2」設置爲ivars或可能作爲@properties。有一組委託/數據源方法可以選擇要響應的數據,而不是試圖構建單獨的表管理類。 –

1

您將需要實現多個tableView數據源。 每個表視圖中創建新的NSObject類:

在DataSourceOne.h

#import <Foundation/Foundation.h> 


    @interface DataSourceOne : NSObject <UITableViewDataSource, UITableViewDelegate> { 
     NSMutableArray *data; 
    } 
    @property (nonatomic, retain) NSMutableArray *data; 

    - (id)initWithData:(NSMutableArray *)d; 

    @end 

然後,在數據源類的每一個* .m文件實現每個表視圖的數據源。 然後,在視圖控制器類,其中包含您的表視圖:

ViewController.h:

#import "DataSourceOne.h" 
#import "DataSourceTwo.h" 
#import "DataSourceThree.h" 


@interface SearchView : UIViewController { 
    DataSourceOne *ds1; 
    DataSourceTwo *ds2; 
    DataSourceThree *ds3; 
UITableView *table1; 
UITableView *table2; 
UITableView *table3; 
} 
@property (nonatomic, retain) IBOutlet UITableView *table1; 
@property (nonatomic, retain) IBOutlet UITableView *table2; 
@property (nonatomic, retain) IBOutlet UITableView *table3; 
@end 

Finaly,設置數據源和委託給每一個的UITableView:

ViewController.m: 


    - (void)viewDidLoad 
    { 
    ds1 = [[DataSourceOne alloc] init]; 
    [table1 setDataSource:ds1]; //for data source 
    [table1 setDelegate:da1];  //for callbacks (didSekectRowAtIndexPath) 
    ... 
    } 

,你甚至可以改變每個tableView隨時都有gata源代碼:只需設置新的數據源並刪除它即可。 GL & HF

相關問題