2010-03-26 32 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

相關問題