将UITableView单元连接到单独的视图控制器

时间:2013-01-04 17:27:32

标签: objective-c xcode uitableview tableview

我有多个独立的视图控制器(我需要它们),并希望将TableView中的每一行连接到一个单独的视图控制器。

至于代码,这是我到目前为止所拥有的。我只做了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连接到dataSource和delegate。我需要的是让上面的每个条目(一个,两个,三个)连接到单独的视图控制器。我已经制作了所有的视图控制器。

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你只需要在didSelectRowAtIndexPath方法中使用if-else或switch语句:

- (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......

答案 1 :(得分:0)

表视图控制器中的每一行都是一个UITableViewCell,所以当你想要控制每一行的“视图控制器”时,我猜这就是你所指的。

您需要继承UITableViewCell,然后在使用

中的单元格时创建该子类的新实例
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

编辑:当然你没有必须继承UITableViewCell,但如果你想完全控制它,那么你就可以了。