通常你的視圖控制器控制着tableView。我想你正試圖適應每個人的多個表格視圖和邏輯。相反,只需爲每個表創建控制器即可。
首先使用UIViewController模板創建主視圖控制器(不要使用TableViewController)。使用XIB並添加一個TableView元素,或者使用代碼創建一個UITableView實例。
現在創建一個符合委託和數據源協議的類。這不需要是視圖控制器。例如:
// MiniTVC.h
@interface MiniTVC : NSObject <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, retain) IBOutlet UITableView *tableView;
@property (nonatomic, retain) NSArray *array;
-(id) initWithTableView:(UITableView*)tableView array:(NSArray*)array;
@end
和實現委託和數據源的方法如常。你至少需要如下:
tableView:heightForRowAtIndexPath:
numberOfSectionsInTableView:
tableView:numberOfRowsInSection:
tableView:cellForRowAtIndexPath:
然後回到您的主視圖控制器,你創建(或使用從界面設計師鉤IBOutlets)一個tableView並將它的委託和數據源設置爲您的MiniTVC類,例如:
// sample table created by code
CGRect frame = CGRectMake(50,50,100,100);
UITableView *tableView = [[UITableView alloc] initWithFrame:frame]
[self.view addSubView:tableView];
// set the datasource/delegate
MiniTVC *miniTVC = [[MiniTVC alloc] initWithTableView:self.tableView array:someArray];
tableView.dataSource = self.miniTVC;
tableView.delegate = self.miniTVC;
您可以重複此過程,從定製的UITableViewCell中創建另一個UITableView + MiniTVC。或者你可以讓UITableViewCell符合表代表/數據源並在那裏實現這些方法。
順便說一句,在tableviews中創建tableviews有點不同尋常。由於它們都是UIViewScroll的子類,它可能會導致意外的行爲,我沒有嘗試過自己。
查看創建新項目時找到的默認代碼..代碼已經存在。 –
@AntwanvanHoudt我知道如何使用基本的tableview,並通過蘋果示例tableviewsuite。我更新了我所經歷的內容。 – merrill