如何以编程方式创建segue连接b / w tableview和视图?

时间:2014-06-12 06:39:01

标签: ios objective-c uistoryboard uistoryboardsegue

我有一个UItableView,我想在其他视图控制器上移动。为了做到这一点,其他建议以及我之前做的是将一个segue从表格视图单元格拖放到其他视图并设置一个segue标识符。

我知道这种方式并且在许多情况下工作正常,但我的细胞数量很大或者可能是基于数据生成的。所以我不能用视图控制器连接每个单元格,并设置segue及其标识符,所以请。

我问的是有没有办法以编程方式创建segue b / w到视图?

我认为UIstoryboardSegue类可以解决这个问题,但它的工作原理可以指导我。

3 个答案:

答案 0 :(得分:1)

- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender
{
// Set the title of navigation bar by using the menu items
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
UINavigationController *destViewController = (UINavigationController*)segue.destinationViewController;
destViewController.title = [[menuItems objectAtIndex:indexPath.row] capitalizedString];



if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] ) {
    SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;

    swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {

        UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController;
        [navController setViewControllers: @[dvc] animated: NO ];
        [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
    };

}

}

在另一个选择中

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{   
    if (index path.row==0)//just like assign the row index
    {
       [self performSegueWithIdentifier:@"yourSeguename" sender:nil];
       }
  }

答案 1 :(得分:1)

您可以从位于故事板视图下方的View Controller按钮连接所有这些segue,而不是从单个单元格连接和创建segue。在这种情况下,您将拥有多个segue,并且它们都不会单独连接到单元格。当segue准备就绪时,您可以使用此方法移动到下一个View Controller,具体取决于从tableView中抽取的单元格。

[self performSegueWithIdentifier:@"yourSegue" sender:nil];

您只需要检查点击了哪个单元格,然后点按即可执行相应的Segue。

希望这有帮助。

答案 2 :(得分:1)

1。 在主View Controller中创建退出segue:

- (IBAction)unwindSegue:(UIStoryboardSegue *)segue
{
    // Without naming a segue
    if ([segue.sourceViewController isKindOfClass:[MyOtherViewController class]])
        // Returning from MyOtherViewController

    // Using a segue name
    if ([segue.identifier isEqualToString:@"MySegue"])
    {
        // Do something
    }
}

2。 您可以在文档大纲中找到您的segue,如下所示:

Your Unwind segue

3。 从黄色到绿色图标的控制+拖动应显示您的退出segue:

在Interface Builder中连接: Exit segue

4

为你命名:

enter image description here

称之为:

[self performSegueWithIdentifier:@"MySegue" sender:self];