如何在从 xib 获得的视图上设置 IBAction
Posted
技术标签:
【中文标题】如何在从 xib 获得的视图上设置 IBAction【英文标题】:How to set IBAction on view obtained from xib 【发布时间】:2014-10-16 08:08:45 【问题描述】:我有一个使用 New -> ios -> User Interface -> View
创建的 xib 文件。然后将其充气/加载到我的 UIViewController 中
UIView *myView = [[UINib nibWithNibName:@"FileName" bundle:nil] instantiateWithOwner:self options:nil].firstObject;
现在我有了视图,我需要知道用户何时点击它。我该如何设置这样的 IBAction(或任何适当的术语)?
【问题讨论】:
你没有使用 Storyboard 吗? 这只是一个视图,不是 UIViewController。这是我将在 UIViewController 中动态显示/隐藏的视图。所以不,我没有为那个视图使用故事板。但是 UIViewController 是使用故事板指定的。 如果这个问题看起来很浅,那是因为直到现在我一直只使用故事板。这是我第一次使用xib。而且我不知道如何让 IBAction 连接到 xib 中的视图。 【参考方案1】:始终在 ViewContoller 中设置 IBAction,因此通过指定文件所有者是视图控制器来将操作绑定到 xib。您还可以通过使用 addGestureRecognizer 处理视图上的事件来动态添加视图触摸句柄。 考试: add gesture to the view
【讨论】:
我记得手势很复杂。所以这就是为什么我只想有一个 IBAction 方法。同样,这是一个 View 而不是 UIViewController。我不知道如何操作 xib 文件以指向 IBAction 可以看例子:icodeblog.com/2008/07/30/… 我按照手势链接进行操作,这很有帮助。谢谢。【参考方案2】:XIB 中有Owner
元素。 AFAIK,只有所有者才能用于手动加载场景。
在 XIB 编辑器中,将事件链接到所有者元素。实例化XIB时,使owner
参数对象提供所需的事件处理程序。
【讨论】:
所有者是指instantiateWithOwner:
?还是您指的是“Interface Builder”检查器中的一个字段?
我的意思是,使用instantiateWithOwner:
方法,我们可以在加载时提供所有者对象。当然,这个所有者就是“Interface Builder”inspector Owner。以上是关于如何在从 xib 获得的视图上设置 IBAction的主要内容,如果未能解决你的问题,请参考以下文章