ios - 以编程方式创建 segue

我有一个通用的 UIViewController,我的所有 UIViewsControllers 都扩展它以重用一些通用操作。

我想在这个“通用”UIViewController 上设置一个 segue,以便所有其他 UIViewControllers 继承。

我试图弄清楚如何以编程方式做到这一点。

我想问题也可能是如何为我的所有 UIViewControllers 设置 segue 而无需进入 Storyboard并手动完成。

最佳答案

我想我会添加另一种可能性。您可以做的一件事是,您可以使用未附加到 Action 的 segue 连接 Storyboard中的两个场景,然后以编程方式在 View Controller 内触发 segue。执行此操作的方式是,您必须从 Storyboard场景底部的文件所有者图标(即连续场景)拖动,然后向右拖动到目标场景。我会放一张图片来帮助解释。

将显示“手动转场”弹出窗口。我选择 Push 作为类型。点击小方 block 并确保您在属性检查器中。给它一个标识符,您将使用它在代码中引用它。

好的,接下来我将使用编程栏按钮项进行转场。在 viewDidLoad 或其他地方,我将使用以下代码在导航栏上创建一个按钮项:

UIBarButtonItem *buttonizeButton = [[UIBarButtonItem alloc] initWithTitle:@"Buttonize"
                                                                    style:UIBarButtonItemStyleDone
                                                                   target:self
                                                                   action:@selector(buttonizeButtonTap:)];
self.navigationItem.rightBarButtonItems = @[buttonizeButton];

好的,注意选择器是 buttonizeButtonTap:。因此,为该按钮编写一个 void 方法,在该方法中,您将像这样调用 segue:

-(void)buttonizeButtonTap:(id)sender{
    [self performSegueWithIdentifier:@"Associate" sender:sender];
    }

调用 prepareForSegue 时需要 sender 参数来识别按钮。 prepareForSegue 是一个框架方法,您将在其中实例化您的场景并传递它完成工作所需的任何值。这是我的方法的样子:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"Associate"])
    {
        TranslationQuizAssociateVC *translationQuizAssociateVC = [segue destinationViewController];
        translationQuizAssociateVC.nodeID = self.nodeID; //--pass nodeID from ViewNodeViewController
        translationQuizAssociateVC.contentID = self.contentID;
        translationQuizAssociateVC.index = self.index;
        translationQuizAssociateVC.content = self.content;
    }
}

好的,刚刚测试过,它可以工作。希望对你有帮助。

https://stackoverflow.com/questions/9674685/

相关文章:

ios - 内部测试时 ITSAppUsesNonExemptEncryption 导出合规性?

objective-c - 如何在 Objective-C 中声明类级别的属性?

objective-c - 检查电子邮件地址在 iOS 上是否有效

ios - 如何在我的 iOS 应用程序中每 n 分钟更新一次后台位置?

objective-c - 在 Objective-C 中 @synchronized 如何锁定/解

objective-c - 为什么 Objective-C 文件使用 .m 扩展名?

ios - 有没有办法遍历字典?

ios - 如何取消选择选定的 UITableView 单元格?

objective-c - Swift 编译器错误 : "non-modular header in

ios - NSUserDefaults - 如何判断 key 是否存在