有谁能告诉我如何在一个视图中显示多个UITableView?
答案 0 :(得分:4)
1)使用不同的帧绘制不同的表视图/拖放不同大小的表视图(如果使用XiB)。
2)像往常一样遵守表视图协议,并为委托/数据源方法提供实现
3)在委托/数据源方法中,使用表视图的对象决定调用哪个表视图。例如:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
if(tableView == tableView1)
{
//Do this
}
else if(tableView == tableView2)
{
//Do that
}
}
答案 1 :(得分: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];
答案 2 :(得分: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类中,它包含您的表Views:
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
最后,将数据源和代理设置为每个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