当前位置: 首页 > 面试题库 >

Swift中的Interface Builder,@ IBOutlet以及委托和dataSource的协议

潘银龙
2023-03-14
问题内容

在Interface
Builder中无法将CustomView声明为@IBOutlet的委托属性连接到ViewController–根本无法建立连接。

这是代码

class CustomView: UIView {
     @IBOutlet var delegate: CustomViewDelegate?
}

@objc protocol CustomViewDelegate {
     ...
}


class ViewController: UIViewController, CustomViewDelegate {
     ...
}

@objc由于使用了快速协议,因此IBOutlet属性不能具有非对象类型,不知道为什么protocol CustomViewDelegate: class {}不起作用。

还有其他人遇到过这样的事情吗?


问题答案:

从Xcode发行说明中:

当插座的类型是协议时,Interface Builder不支持连接到Swift文件中的插座。

解决方法:将插座的类型声明为AnyObject或NSObject,使用Interface Builder将对象连接到插座,然后将插座的类型更改回协议。

编辑: Xcode 9 beta 3发行说明说,此替代方法应该不再是必需的。



 类似资料:
  • 问题内容: 有人可以解释何时以及何时不使用Swift中的委托指针进行“弱”分配,为什么? 我的理解是,如果您使用的协议未定义为类,则无法,也不想将您的委托指针分配给弱。 但是,当您的协议定义为类类型协议时,您是否要将委托设置为弱指针? 我对么?在Apple的快速指南中,类协议示例没有使用弱分配,但是在我的测试中,如果没有弱引用我的委托人,我会看到强参考周期。 问题答案: 通常,使类协议(如用关键字

  • 本文向大家介绍C#中的委托是什么?事件是不是一种委托?事件和委托的关系。相关面试题,主要包含被问及C#中的委托是什么?事件是不是一种委托?事件和委托的关系。时的应答技巧和注意事项,需要的朋友参考一下 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的指针。 委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实

  • 我有一个奇怪的错误,我的代表是零,也不知道在哪里检查。也许其他人也有同样的问题。 我有这个类和协议: 在我的VC里 触发计划通知后,我单击它,调用并且不知为何为零,即使已设置委托(打印了来自的消息)。 扩展中的委托方法从未触发,因为委托为nil。 我还在每个类的中打印了一些消息,以查看它是否以某种方式从内存中删除了,但它们没有,只是在我从vc堆栈中弹出它们之后。

  • 本文向大家介绍js事件委托以及冒泡原理?相关面试题,主要包含被问及js事件委托以及冒泡原理?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 事件委托是利用冒泡阶段的运行机制来实现的,就是把一个元素响应事件的函数委托到另一个元素,一般是把一组元素的事件委托到他的父元素上,委托的优点是 减少内存消耗,节约效率 动态绑定事件 事件冒泡,就是元素自身的事件被触发后,如果父元素有相同的事件,如onc

  • 本文向大家介绍C#中的委托使用,包括了C#中的委托使用的使用技巧和注意事项,需要的朋友参考一下 从今天开始写关于C#的系列文章,本篇文章主要讲解C#中的委托使用。 委托其实就是一种数据类型,和int,string是一样的概念。 如果要把一个字符串赋值给一个变量,用string声明一个变量即可。如果要把一个方法赋值给一个变量,那么用什么关键字呢?当然就是用委托了,所以用委托声明的变量就可以接受一个方

  • 我试图理解继承与委派的斗争,以及如何实现这两者。我的问题是为什么我要用Kotlin的方式用by关键字实现委派?我觉得太过分了。 让我给你举个例子。我们有一个可以点餐的应用程序。这款应用名为DeliveryQueen。 下面是Java示例: Kotlin示例#1没有明确使用by关键字: