Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建可以触发segues的UIView子类_Ios_Segue_Uistoryboard_Uistoryboardsegue - Fatal编程技术网

Ios 创建可以触发segues的UIView子类

Ios 创建可以触发segues的UIView子类,ios,segue,uistoryboard,uistoryboardsegue,Ios,Segue,Uistoryboard,Uistoryboardsegue,UIButton、UITableViewCell等的实例可以用作Interface Builder中的序列源(即,您可以按住ctrl键单击这些对象并将它们链接到情节提要中的控制器) 我们可以创建一个允许相同功能的直接UIView子类吗?如果是,怎么做 注意:这里有另一种问我问题的方法:如何在我自己的类的“触发序列”部分添加项目?以下是UITableViewCell可以看到的内容: 是从视图控制器到视图控制器在情节提要中创建一个序列。你必须给那个序列一个标识符。然后倾听该视图上开始的触摸并调用[s

UIButton、UITableViewCell等的实例可以用作Interface Builder中的序列源(即,您可以按住ctrl键单击这些对象并将它们链接到情节提要中的控制器)

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

注意:这里有另一种问我问题的方法:如何在我自己的类的“触发序列”部分添加项目?以下是UITableViewCell可以看到的内容:


是从视图控制器到视图控制器在情节提要中创建一个序列。你必须给那个序列一个标识符。然后倾听该视图上开始的触摸并调用[self-PerformsgueWithIdentifier@“YOUR Identifier”]

不,您不能直接使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...
}

您可以对控件进行子类化,使其更符合您的目的

在Xcode中,您必须将类的名称放在正确的检查器中,如果它需要不同的选项,请使用key propertyes

选择UIView后,该选项卡的工具提示为“显示标识检查器”

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


一个更复杂的功能是使用“用户定义的运行时属性”

因为我喜欢拥有与Jean相同的功能,我感到困惑。免责声明:我在iOS和苹果上是个十足的noob,所以我想一定是我和我不理解为什么它不起作用

这个“答案”更多的是一个理论,也许是一个非常糟糕的理论。因此,如果已经有解决方案,请告诉我

理论

我认为不可能仅通过代码扩展/控制“触发序列”部分。似乎XCode根据从触发Segues显示的对象库中选择的控件知道

思想

<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>
只有一个子类,例如UIButton,并没有让我在Connections Inspector中找到触发的Segues部分。在“自定义类”部分中设置类也没有帮助

只有当我使用对象库中的按钮时,我才能得到触发的Segues部分。例如,如果我从UIButton子类,我应该使用“Button”

每当我更改

查看:没有触发的序列

<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中的元素/控件的触发Segues部分-它不依赖于来自的类I子类。因此,我怀疑是否有可能通过代码控制触发序列部分的内容


如果我错了,请告诉我。如前所述,我目前还没有关于XCode内部的实际经验,我很好奇我的理论是否只是一派胡言。

然而,UITableViewCell是UIView的一个子类,仍然允许分段。。。我如何使用自己的UIView类来实现这一点?只需将视图放置在您喜欢的位置即可。然后在右菜单的“ShowIdentity inspector”选项卡中,您可以为自己设置类名和属性(AttributeRes)project@KikoAlbiolColomer顺便说一句,“海豚”是一种雄性海豚。“致海豚”的意思是“像海豚一样移动”@julian.Weinert-只需点击“编辑”按钮即可修复无害的拼写错误。这是一个很好的建议,但不能回答我的问题。知道如何允许UIView子类成为segue源代码吗?但是,UITableViewCell是UIView的子类,仍然允许segue。。。我如何使用自己的UIView类呢?如果你想这样做,为什么不使用UIView方法呢?如果view==myVIEW执行操作?或者在视图中添加触摸识别器?我会告诉你,它不允许我在情节提要中使用分段。为什么不呢?您选择了视图控制器并将控件拖到下一个视图控制器?我从未想过要在引擎盖下比较XML!很有意思,70岁。看起来有点硬连接,但正如所说,这只是一个理论。