Bea*_*ear 48 storyboard ios segue
嗨,我有一个故事板,能够在单击表格单元格时显示详细视图.我想添加额外的功能,以便根据我点击的单元格显示不同的视图控制器.我尝试从同一个单元格拖动两个segue但它不允许它.
我的想法是,我将从单元格中有两个segue,每个指向不同的视图,然后调用所需的segue:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger row = indexPath.row;
NSLog(@"Selected Item :-) %@",[NSString stringWithFormat:@"%@",[myData objectAtIndex:row]]);
if(row %2 ==0){
NSLog(@"Even");
[self performSegueWithIdentifier:@"ShowSecondIndex" sender:self];
}else{
[self performSegueWithIdentifier:@"ShowSelectedMovie" sender:self];
NSLog(@"Odd");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我会在prepareForSegue中处理segue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"Prepare For Segue ID:%@",[segue identifier]);
if([[segue identifier] isEqualToString:@"ShowSelectedMovie"]){
Tab2_ItemViewController *vc = [segue destinationViewController];
NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row];
NSLog(@"Selected Index: %d",selectedIndex);
[vc setSelectedItem: [NSString stringWithFormat:@"%@",[myData objectAtIndex:selectedIndex]]];
NSLog(@"String Value: %@",[NSString stringWithFormat:@"%@",[myData objectAtIndex:selectedIndex]]);
[vc setSelectedIndex:selectedIndex];
}else if([[segue identifier] isEqualToString:@"ShowSecondIndex"]){
NSLog(@"Viewing Second Index");
}
}
Run Code Online (Sandbox Code Playgroud)
但它从未显示第二个视图.这是因为它不可能有来自单个表格单元格的两个segue.我也尝试将两个segue从控制器拖到每个目的地而不是一个来自单元格,一个来自控制器但是没有运气?
LJ *_*son 67
在这种情况下,不要尝试将Segues连接到tableviewcell.将它们连接到View Controller本身.
mgr*_*ndi 46
不要尝试从TableCell创建多个segue到其他视图控制器,您想要从故事板界面中的视图控制器下方的视图控制器图标ctrl +拖动到要转移到的视图控制器.然后它将允许您设置多个segues.
然后要实际使segue工作,你需要为segues本身添加标识符,你可以点击它们然后在属性检查器中给它一个名字:
那么,对于TableCells的例子,在你的UITableViewDelegate中
-tableView:didSelectRowAtIndexPath:
Run Code Online (Sandbox Code Playgroud)
您可以使用
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
Run Code Online (Sandbox Code Playgroud)
根据你自己选择segue的逻辑手动启动一个segue.
| 归档时间: |
|
| 查看次数: |
31692 次 |
| 最近记录: |