2011-11-07 24 views
0

主tableview將有用戶添加/創建的行,並且該行將打開他們自己的tableview,它們也有自己的add/create own row。我的主要問題是如何確保在主表格視圖中添加的每一行打開他們自己的tableview(作爲空白直到從用戶添加)。iphone:在主tableview中的每一行都有自己的tableview

這個我見過的鏈接是最接近的How can I move to another view controller when the user clicks on a row?,但不完全是我在找什麼。大多數樣本/導師都是通常填充的,或者在他們的tableview中已經有一個數組。我想讓礦山完全沒有任何內容,但只有用戶和主桌面視圖才能打開自己的tableview。

我已經有兩個tableview一個是主要的,其他的是每個子行。我能夠在主表視圖中插入行,但它會打開與主tableview中其他行相同的tableview,並想知道如何確保主tableview中的每一行都打開它們自己的空白tableview。

+0

查看創建新項目時找到的默認代碼..代碼已經存在。 –

+0

@AntwanvanHoudt我知道如何使用基本的tableview,並通過蘋果示例tableviewsuite。我更新了我所經歷的內容。 – merrill

回答

1

通常你的視圖控制器控制着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的子類,它可能會導致意外的行爲,我沒有嘗試過自己。