UIButton,UITableViewCell等实例可用作Interface Builder中的segue源(即您可以按住Ctrl键单击这些对象并将它们链接到故事板中的控制器)。
我们可以创建一个允许相同功能的直接UIView子类吗?如果是这样,怎么样?
注意:这是另一种问我问题的方法:如何在我自己的课程的“触发的段落”部分添加项目?这是人们可以看到的UITableViewCell:
答案 0 :(得分:3)
因为我喜欢和Jean一样的功能,所以我很困惑。免责声明:我是iOS和Apple的总菜鸟,所以我认为必须是我,而且我不理解为什么它不起作用。
这个答案'更像是一种理论,也许是一种非常糟糕的理论。所以请告诉我是否有'已经是一个解决方案了。
<强>理论强>
我认为不可能扩展/控制“触发的分段”&#39;部分仅通过代码。看起来XCode基于从对象库中选择的控件来知道哪些触发的片段要显示。
<强>思想强>
只有一个子类例如UIButton没有让我获得Connections Inspector中的Triggered Segues Section。在“自定义类”部分中设置类也无济于事。
只有当我使用对象库中的Button时,才能获得Triggered Segues Section。例如。如果我是UIButton的子类,我应该使用&#39; Button&#39;。
我在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...
}