我使用Storyboard创建了一个包含三个UITableView的层,并且能够从第一个移动到第二个,然后移动到第三个。我现在想以编程方式创建第四个UITableView。通过在第三个UITableView中选择一个Cell,必须创建并显示第四层UITableView,以便我可以用数据填充它。请帮忙。非常感谢。这里包含的是我想要执行的代码部分:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
cell.textLabel.text = [self.grapes objectAtIndex:indexPath.row];
if ([cell.textLabel.text isEqual: @"Grape variety"]) {
//create the navigation controller and add the controllers view
navigationController = [[UINavigationController alloc] init];
[self.window addSubview:[self.navigationController view]];
//check if the display viewcontroller exists, otherwise create it
if(self.displayViewController == nil) {
ViewController *inputView = [[ViewController alloc] init];
self.displayViewController = inputView;
}
//push the display viewcontroller into the navigation view controller stack
[self.navigationController pushViewController:self.displayViewController animated:
}
&#34 ;-(void)tableView ...来自使用Storyboard创建的TableView,代码的最后一部分是我想要以编程方式创建的TableView。
如果我执行代码,新创建的TableView会破坏在Storyboard中创建的那个,并且它不会以编程方式显示我想要创建的那个,不知何故必须能够更改显示的优先级并获得最新创建的一个是活跃的
答案 0 :(得分:0)
我会使用向下钻取的方法,故事板上的segue有效地自行循环(见下图):
然后,您可以提供抽象的数据源和委托实现,以使视图控制器尽可能轻松。例如
@implementation ArrayDataSource
- (id)itemAtIndexPath:(NSIndexPath*)indexPath {
return items[(NSUInteger)indexPath.row];
}
- (NSInteger)tableView:(UITableView*)tableView
numberOfRowsInSection:(NSInteger)section {
return items.count;
}
- (UITableViewCell*)tableView:(UITableView*)tableView
cellForRowAtIndexPath:(NSIndexPath*)indexPath {
id cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier
forIndexPath:indexPath];
id item = [self itemAtIndexPath:indexPath];
configureCellBlock(cell,item);
return cell;
}
@end
然后,您可以根据您所使用的表格视图来配置它:跟踪您的位置:
void (^configureCell)(PhotoCell*, Photo*) = ^(PhotoCell* cell, Photo* photo) {
cell.label.text = photo.name;
};
photosArrayDataSource = [[ArrayDataSource alloc] initWithItems:photos
cellIdentifier:PhotoCellIdentifier
configureCellBlock:configureCell];
self.tableView.dataSource = photosArrayDataSource;