IOS 故事板 - 显示选择表格单元格的不同视图
Posted
技术标签:
【中文标题】IOS 故事板 - 显示选择表格单元格的不同视图【英文标题】:IOS storyboard - show different views on selection of table cells 【发布时间】:2014-01-04 13:50:40 【问题描述】:我是 ios 编程新手。我有多个视图控制器。我首先显示 tableView 控制器,并且在它之前有一个导航控制器.. 我想根据所选单元格显示特定的视图控制器.. 我已将 tableView 控制器设置为 dynamic 和 原型 Cell 到 1 我已经从表连接到我的一个视图控制器名称 APP1ViewController 我还有另外两个控制器名称 APP2 和 APP3 .. 我如何连接它们以便在特定单元格特定的视图控制器上加载。 这是显示单元格的代码..目前我的表格中有一节和三行
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"AppCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
switch (indexPath.row)
case 0:
cell.textLabel.text = @"APP 1 ";
cell.detailTextLabel.text = @"Detail of App 1...";
break;
case 1:
cell.textLabel.text = @"App2";
cell.detailTextLabel.text = @"Detail of App 2 app...";
break;
case 2:
cell.textLabel.text = @"App3";
cell.detailTextLabel.text =
@"Detail of App 3...";
break;
default:
cell.textLabel.text = @"Unkown";
cell.detailTextLabel.text = @"Unknown";
break;
return cell;
【问题讨论】:
【参考方案1】:从具有表格的控制器而不是表格或单元格本身创建您的三个 segue。给每个 segue 一个唯一的标识符。在tableView:didSelectRowAtIndexPath:
中,调用表视图控制器的performSegueWithIdentifier:sender:
方法并选择与所选行匹配的标识符。
【讨论】:
是的,谢谢我明白了。我按照你的步骤现在我想问一件事我如何在找到 segue 标识符后显示控制器 .. 正确吗? - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender if([[segue identifier] isEqualToString:@"App1"] ) App1ViewController *app1 = segue.destinationViewController; 对吗? 我这样做了 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender if([[segue identifier] isEqualToString:@"App1"] ) [self performSegueWithIdentifier: @ “App1”发件人:self]; 但它不起作用 如我所说,将performSegueWithIdentifier...
放入tableView:didSelectRowAtIndexPath:
。 prepareForSegue...
在 segue 被触发后被调用。
你能编辑我的代码吗.. 我是 ios 新手。我觉得很难理解这个【参考方案2】:
试试这个,
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"your storyboard" bundle:nil];
UIViewController *viewController = nil;
switch (indexPath.row)
case 0:
viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController1"];
break;
case 1:
viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController2"];
break;
case 2:
viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController3"];
break;
default:
viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewController4"];
break;
[[self navigationController] pushViewController:viewController animated:YES];
【讨论】:
感谢您的回答。目前我正在尝试使用 Phillip Mills 的方式来处理它..希望它有效..否则我会使用你的【参考方案3】:实现 Tablview 的委托方法之一
tableView:didSelectRowAtIndexPath:
在上述委托方法中,您可以从情节提要中获取特定的视图控制器,然后实例化并推送到导航控制器,如下所示
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"your storyboard" bundle:nil];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"Your Storyboard's identifier that you want to push"];
[[self navigationController] pushViewController:viewController animated:YES];
【讨论】:
以上是关于IOS 故事板 - 显示选择表格单元格的不同视图的主要内容,如果未能解决你的问题,请参考以下文章
如何从一个带有动态单元格的表格切换到 3 个或更多不同的视图
故事板自动布局将视图放置在表格单元格中,并将尾随到超级视图约束固定到最左侧