2013-01-04 41 views
-2

我有多個單獨的視圖控制器(我需要),並希望將TableView中的每一行連接到單獨的視圖控制器。將UITableView單元連接到單獨的視圖控制器

至於代碼,這是我到目前爲止。我只是做了的tableView:

ViewController.h

[...] 
@interface SimpleTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 
[...] 

ViewController.m

[...] 
@implementation SimpleTableViewController 
{ 
NSArray *tableData; 
} 

[...] 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
tableData = [NSArray arrayWithObjects:@"One", @"Two", @"Three", nil]; 
} 

[...] 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return [tableData count]; 
} 

[...] 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
static NSString *simpleTableIdentifier = @"SimpleTableItem"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
} 

cell.textLabel.text = [tableData objectAtIndex:indexPath.row]; 
return cell; 
} 

我也連接的tableView到數據源和委託。我需要的是將上面的每個條目(一個,兩個,三個)連接到單獨的視圖控制器。我已經制作了所有的視圖控制器。

回答

1

如果我正確理解你的問題,你只需要的if-else或switch語句在您的didSelectRowAtIndexPath方法方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (indexPath.row == 0) { 
     ViewController1 *vc1 = "instantiate a controller here" 
     [self.navigationController pushViewController:vc1 animated:YES]; 
    else if (indexPath.row == 1) { 
     ViewController2 *vc2 = "instantiate a controller here" 
     [self.navigationController pushViewController:vc2 animated:YES]; 
    etc...... 
0

表視圖控制器中的每一行是一個UITableViewCell,所以我猜那是什麼你指的是何時想要控制每一行的'視圖控制器'。

您需要繼承的UITableViewCell,然後當你來用細胞在

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

編輯您可以創建一個子類的一個新實例:就算你不要有子類的UITableViewCell,但如果你想完全控制它然後你做。

相關問題