我有一个UITableView列出多种类型的对象,我想根据用户选择的对象类型选择不同的视图。
是否可以通过使用多个 segues 来做到这一点,如果可以,怎么做?
我有一个UITableView列出多种类型的对象,我想根据用户选择的对象类型选择不同的视图。
是否可以通过使用多个 segues 来做到这一点,如果可以,怎么做?
当然 !通过从 tableViewController(不是一行,tableViewController 本身)拖到下一个视图来定义故事板上的所有 segue 。给他们ID,这样你就知道该打电话给哪个了。当您的所有转场都以可视方式定义后,请转到代码。在你的 tableView 的委托中didSelectRowAtIndexPath
,只需调用你想要的 segue,通过检查indexPath.row
:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
switch (indexPath.row) {
case 0: [self performSegueWithIdentifier:@"Segue0" sender:self];
break;
case 1: [self performSegueWithIdentifier:@"Segue1" sender:self];
break;
[...]
default: break;
}
}
这样,当用户选择第一行时,ID 为“Segue0”的 segue 将被触发,依此类推。
您还可以添加以下行:在用户触摸后该行不会保持选中[tableView deselectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] animated:YES];
状态的开头!didSelectRowAtIndexPath
编辑:这适用于静态和动态单元格!小心从 tableViewController 中按住 ctrl-拖动你的 segue,而不是一个单元格!
另一种实现方式是:
在表格视图中为您要存储的每种类型的对象创建一个专门的可重用prototypeCell(或者从您的对象库中拖动一个新的单元格对象,或者单击现有的默认对象并复制/粘贴)。请记住为每个可重复使用的单元格填写一个唯一标识符,稍后您需要能够将它们区分开来(可能会调用
[tableView dequeueReusableCellWithIdentifier:@"CellIdentifier0"];
里面
(UITableViewCell *)tableView(UITableView *)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath;
按住 Ctrl 键单击每个原型单元格,然后拖动为每个单元格创建一个 segue
segues 将被自动解雇,只需要在他们被解雇时处理它们
如果每个可重复使用的单元格有一个转换,这很有效,这可能涵盖许多情况。