【问题标题】:XCode Storyboard: how to create a segue when the segue trigger is not on storyboardXCode Storyboard:当segue触发器不在故事板上时如何创建segue
【发布时间】:2012-05-16 13:31:01
【问题描述】:

所以我开始在 XCode 4.3.2 中使用故事板。我从 Master-Detail 应用程序(iPad 的拆分视图应用程序)开始。在详细视图(名为DetailVC)中,我有一个视图,其中显示了一组自定义视图。

自定义视图(名为GridView)有一个点击手势识别器,它应该处理每个自定义视图上的点击事件。点击GridView 会推送视图控制器显示一些搜索结果(名为SearchResultsVC)。

GridView 在单独的 nib 文件中创建,DetailVCSearchResultsVC 驻留在情节提要中,如何创建目标为 SearchResultsVC 的推送转场?我刚刚在 DetailVC 和 SearchResultsVC 之间创建了一个 segue?当识别到点击手势时,我是否可以在 GridView 类中以编程方式触发此 segue????

【问题讨论】:

    标签: xcode storyboard uistoryboardsegue


    【解决方案1】:

    在您处理水龙头使用的方法中:

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

    在 StoryBoard 控件中,从 DetailVC 拖动到 SearchResultVC 并选择您想要的 segue 类型。确保在属性检查器中将您的 segue 标识符命名为与上述方法中的标识符相同。

    我会尝试改进我的答案我认为我搞砸了:

    1) 在您的 DetailVC.h 中为您的 GridView 创建一个实例变量,如下所示

    IBOutlet UIView * gridView;
    

    还像这样为您的网格视图创建一个 getter 方法和一个 IBAction

    -(UIView *)gridView;
    -(IBAction)myGridGotPressed:(id)sender;
    

    2)现在在您的 DetailVC.m 中实现您的方法,如下所示

    -(UIView *)gridView{
    if(!gridView){
    [[NSBundle mainBundle] loadNibNamed:@"GridView" owner:self options:nil];
    }
    return gridView;
    }
    

    也像这样实现您的 IBAction

    -(IBAction)myGridGotPressed:(id)sender{
    [self performSegueWithIdentifier:@"yourSegueIdentifier" sender:self];
    }
    

    3) 要完成这项工作,您需要将 GridView 的 filesOwner 类更改为 DetailVC,然后正常连接插座和操作。

    希望对你有帮助。

    【讨论】:

    • 网格视图必须将触摸传回给 DetailVC。 UIView 子类不能执行 segues。
    • 我猜想 DetailVC 会有办法通过 IBAction 或他自己的协议来处理触摸。
    • @jrturton - 我应该如何将触摸传回给 DetailVC?使用委托 - 在这种情况下我将如何获得对 DetailVC 的引用(视图不应该知道视图控制器,对吧?)
    • @GazLong - 非常感谢。这就是我需要的Changing the file owner。只有一个问题 - 究竟如何做到这一点?在界面生成器中?
    • 只需点击左侧(场景编辑器)中的文件所有者,然后将类从 NSObject 更改为您的视图控制器类。
    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 2014-01-11
    • 2012-03-06
    • 2012-05-12
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多