2010-03-26 39 views
2

如何在1个nib/UIView上添加2个UITableView,但使用2个不同的UITableViewController来处理?如何在1个nib/UIView上添加2个UITableView,但使用2个不同的UITableViewController来处理?

感谢您的帮助!


更新时间:


我理解了基本的想法,但我不能让它工作起来。

也许这是一个简单的问题,但对于有人不知道,这显然是一个困难的问题。

任何人都可以帮助解决一些问题吗?

我创建了一个名为“MutiTableView”的基于视图的应用程序,然后将&将2个TableView拖放到笔尖中。

这是生成ViewController,我添加2 IBOutlet为了连接到笔尖中的2个表。

@class FirstTableViewController; 
@class SecondTableViewController; 
@interface MutiTableViewViewController : UIViewController { 

    UITableView *tablefirst; 
    UITableView *tablesecond; 
    FirstTableViewController *firstController; 
    SecondTableViewController *secondController; 
} 

//@property (nonatomic, retain) IBOutlet Table1ViewController *viewController; 
@property (nonatomic, retain) IBOutlet UITableView *tablefirst; 
@property (nonatomic, retain) IBOutlet UITableView *tablesecond; 
@property (nonatomic, retain) FirstTableViewController *firstController; 
@property (nonatomic, retain) SecondTableViewController *secondController; 

这是我如何设置数据源和委托

- (void)viewDidLoad { 
    NSLog(@"viewDidLoad :("); 
    firstController = [[FirstTableViewController alloc] initWithStyle:UITableViewStylePlain]; 
    secondController = [[SecondTableViewController alloc] initWithStyle:UITableViewStylePlain]; 

    tablefirst.delegate = firstController; 
    tablefirst.dataSource = firstController; 

    tablesecond.delegate = secondController; 
    tablesecond.dataSource = secondController; 

    [super viewDidLoad]; 
} 

这是我FirstTableViewController,它仅仅是一个基本的tableViewController

@interface FirstTableViewController : UITableViewController { 
    NSArray *listData; 
} 
@property (nonatomic,retain) NSArray * listData; 
@end 

#import "FirstTableViewController.h" 


@implementation FirstTableViewController 
@synthesize listData; 
/* 
- (id)initWithStyle:(UITableViewStyle)style { 
    // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. 
    if (self = [super initWithStyle:style]) { 
    } 
    return self; 
} 
*/ 


- (void)viewDidLoad { 
    NSLog(@"FirstTableViewController viewDidLoad"); 
    NSArray * array = [[NSArray alloc] initWithObjects:@"111",@"222",@"333",@"444",@"555",@"666",@"777",@"888",@"999",@"000",nil]; 
    self.listData = array; 
    [array release]; 
    [super viewDidLoad]; 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

..... 

我也像实施以下方法。

numberOfSectionsInTableView 
tableView:numberOfRowsInSection: 
tableView:cellForRowAtIndexPath: 

回答

1

将委托和数据源设置为不同的UITableViewControllers。

AUITableViewController * firstController = [[AUITableViewController alloc] init]; 
UITableView * table1 = [[UITableView alloc] initWith...]; 
table1.delegate = firstController; 
table1.dataSource = firstController; 
[someView addSubview:table1]; 
[table1 release]; 
[firstController release]; 

AnotherUITableViewController * secondController = [[AnotherUITableViewController alloc] init]; 
UITableView * table2 = [[UITableView alloc] initWith...]; 
table2.delegate = secondController; 
table2.dataSource = secondController; 
[someView addSubview:table2]; 
[table2 release]; 
[secondController release]; 

它没有测试,但这是基本的想法。

要在界面构建器中执行此操作,只需将DataSource和Delegate连接器连接到不同的类/控制器即可。

+0

再次想到,不要释放视图控制器。在.h中声明它们,在viewDidLoad上进行alloc,并在dealloc中放入一个版本。 – 2010-03-26 18:21:02

+0

我尝试过,但无法让它工作...更多信息附加。 – Jacky 2010-03-27 14:54:42

+0

如果你是在IB中完成它,将dataSource和Delegate出口连接到不同的类可能是一个想法,而不是在viewDidLoad中完成它。 – 2010-03-28 09:28:52