创建一个可以触发segues的UIView子类

时间:2015-08-13 14:49:09

标签: ios segue uistoryboard uistoryboardsegue

UIButton,UITableViewCell等实例可用作Interface Builder中的segue源(即您可以按住Ctrl键单击这些对象并将它们链接到故事板中的控制器)。

我们可以创建一个允许相同功能的直接UIView子类吗?如果是这样,怎么样?

注意:这是另一种问我问题的方法:如何在我自己的课程的“触发的段落”部分添加项目?这是人们可以看到的UITableViewCell:

Triggered Segue

3 个答案:

答案 0 :(得分:3)

因为我喜欢和Jean一样的功能,所以我很困惑。免责声明:我是iOS和Apple的总菜鸟,所以我认为必须是我,而且我不理解为什么它不起作用。

这个答案'更像是一种理论,也许是一种非常糟糕的理论。所以请告诉我是否有'已经是一个解决方案了。

<强>理论

我认为不可能扩展/控制“触发的分段”&#39;部分仅通过代码。看起来XCode基于从对象库中选择的控件来知道哪些触发的片段要显示。

enter image description here

<强>思想

只有一个子类例如UIButton没有让我获得Connections Inspector中的Triggered Segues Section。在“自定义类”部分中设置类也无济于事。

enter image description here

只有当我使用对象库中的Button时,才能获得Triggered Segues Section。例如。如果我是UIButton的子类,我应该使用&#39; Button&#39;。

enter image description here

我在Main.storyboard中使用了XML - 每当我将<subviews><button ...更改为<subviews><view ...“触发的段落”时部分不见了。将其更改回来就会出现。见下文。我将包含customClass="IconButton"属性的元素从按钮更改为查看。

按钮:触发了分段

<viewController title="..." id="Zzf-WE-vxI" customClass="MyCustomClass" ... >
    <view key="view" contentMode="scaleToFill" id="Mfn-O2-CMJ">
        <!-- ... -->
        <subviews>
            <button customClass="IconButton" customModule="...">
                <!-- ... -->
            </button>

查看:无触发的分段

<viewController title="..." id="Zzf-WE-vxI" customClass="MyCustomClass" ... >
    <view key="view" contentMode="scaleToFill" id="Mfn-O2-CMJ">
        <!-- ... -->
        <subviews>
            <view customClass="IconButton" customModule="...">
                <!-- ... -->
            </view>

<强>结论

我的结论是XCode基于故事板的XML中的元素/控件显示Triggered Segues部分 - 它不依赖于I类的子类。所以我怀疑可以通过代码来控制Triggered Segues部分的内容。

如果我错了,请告诉我。如上所述,我现在对XCode的内部没有真正的经验,如果我的理论只是bla bla,我很好奇。

答案 1 :(得分:0)

您可以将控件子类化为更符合您目的的控件。

在Xcode中,您必须在正确的检查器中放置类的名称,如果需要不同的选项,请使用键属性。

选择UIView后,标签会被工具化为&#39;显示身份检查器&#39;。

然后您可以访问自定义类区域,您可以选择类名。

更复杂的功能是使用&#39;用户定义的运行时属性&#39;

答案 2 :(得分:-1)

是从视图控制器到视图控制器在故事板中创建一个segue。你必须给segue一个标识符。然后听取该视图上的触摸并调用[self performSegueWithIdentifier @“你的IDENTIFER”];

不,你不能直接让UIVIEW有动作。您可以添加一个按钮 这里添加一个按钮来查看

UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
[view setUserInteractionEnabled:NO];
[view setBackgroundColor:[UIColor redColor]];

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn addSubview:view];
[btn setFrame:CGRectMake(0, 0, 200, 100)];
[btn addTarget:self action:@selector(click)forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btn];

或添加点击识别器以查看

//The setup code (in viewDidLoad in your view controller)
     UITapGestureRecognizer *singleFingerTap = 
  [[UITapGestureRecognizer alloc] initWithTarget:self 
                                      action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleFingerTap];

//The event handling method
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
  CGPoint location = [recognizer locationInView:[recognizer.view superview]];

 //Do stuff here...
}