我有多个独立的视图控制器(我需要它们),并希望将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。我需要的是让上面的每个条目(一个,两个,三个)连接到单独的视图控制器。我已经制作了所有的视图控制器。
答案 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,但如果你想完全控制它,那么你就可以了。