【问题标题】:How to create segue connection b/w tableview and view programmatically?如何以编程方式创建 segue 连接 b/w tableview 和查看?
【发布时间】:2014-08-02 09:32:43
【问题描述】:

我有一个 UItableView,我想从它移到其他视图控制器上。为此,其他建议和我之前所做的是将 segue 从表视图单元格拖放到其他视图并设置 segue 标识符。

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

我要问的是有什么方法可以以编程方式创建 segue b/w 到视图?

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

【问题讨论】:

  • 试试这个链接它希望你stackoverflow.com/questions/23102978/…
  • 谢谢@Anbu.Karthik 我也在谈论 SWRevealViewControllerSegue n 这个 api 我必须手动将侧边栏单元连接到其他视图控制器我的侧边栏菜单项是我不想创建的大列表 20 +原型单元并创建和连接segue。请你指导我。
  • 这里有一个link 可能对你有帮助。

标签: ios objective-c uistoryboard uistoryboardsegue


【解决方案1】:

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

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

您只需要检查点击了哪个单元格,然后在点击时执行适当的 Segue。

希望这会有所帮助。

【讨论】:

  • 您可以从 View Controller 按钮连接所有这些 segue,而不是从单个单元格连接和创建 segue ???指导我这个我在tableview上没有任何按钮
  • 查看我的更新答案。那个黄色按钮是 View Controller Button,你必须使用那个按钮来创建 segues。
  • 感谢您标记答案。很高兴它对您有所帮助。
【解决方案2】:

1。 在您的主视图控制器中创建一个退出转场:

- (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。 您可以像这样在 Document Outline 上找到您的 segue:

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

在 Interface Builder 中连接:

4.

你的名字:

叫它:

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

【讨论】:

    【解决方案3】:
    - (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];
           }
      }
    

    【讨论】:

    • 拖放segue的过程在哪里做?
    • 我看不懂?将 segue 的拖放过程拖放到您执行该操作的位置
    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 2010-09-24
    相关资源
    最近更新 更多