草庐IT

Delegate

全部标签

ios - 'textFieldDidBeginEditing' 几乎匹配 Swift 中协议(protocol) 'textFieldDidBeginEditing' 的可选要求 'UITextFieldDelegate'

我正在开发一个应用程序,我在其中为应用程序的每个功能创建了模块。我必须从一个模块UIController切换到另一个模块UIController。我在模块中有UIController,我将该Controller标记为公共(public)访问标识符,如下所示publicclassInterAccountTransferViewController:UIViewController{overridepublicfuncviewDidLoad(){............}}上述类还在扩展中实现了UITextField委托(delegate)。当我将上面的类创建为开放访问时,我在TextFi

ios - didSelectRowAt Swift 3 即使在设置了委托(delegate)和数据源后也未调用

这个问题似乎已经在StackOverflow上被问过很多次了,但是在搜索了几个小时之后,我仍然没有找到解决我的问题的方法。我在SecondViewController.swift中有一个TableView,我确实让它成为了delegate和dataSourceSecondViewController.swift,但在单击表格单元格时仍未触发didSelectRowAt方法。我正在尝试将segue应用于另一个ViewController,但didSelectRowAt方法本身不起作用。我在Storyboard的TableView属性中选择了单选,并确保为TableView和原型(prot

ios - Swift 委托(delegate)和可选

我已经声明了这个协议(protocol)protocolReactorDelegate{funcReactorUpdateUI()}在我的模型中,我有一个委托(delegate)可选属性并检查是否为空,将其解包以调用VC提供的协议(protocol)方法。vardelegate:ReactorDelegate?ifdelegate{delegate?.ReactorUpdateUI()}我的VC遵循协议(protocol)并具有ReactorUpdateUI方法classVC_Reactor:UIViewController,ReactorDelegate我试图在VC中创建模型的实例,

swift - 无法从 Xcode 6.1 中的 Storyboard连接自定义协议(protocol)委托(delegate)

我刚刚将我的mac升级到10.10,将Xcode升级到6.1,发现一个关于Storyboard的奇怪的东西,我的案例使用的是一个swift项目,无法再从Storyboard连接自定义协议(protocol)委托(delegate)。老版本Xcode自带的旧连接没问题,但我不能再连接任何新的委托(delegate)。即使我删除连接后也无法重新连接旧的。有人遇到这种情况吗??==============================更新==============================ViewClass@objcpublicprotocolVideoViewResizeDele

ios - Swift 中可测试的异步设计模式

我正在学习Swift中的测试驱动开发。当我意识到我经常用于异步请求的委托(delegate)模式很难测试时,我遇到了困难。我了解到,如果某些东西难以测试,那么实现背后的设计模式可能会更好。这让我感到困惑,因为我认为我使用的委托(delegate)模式很常见,我想知道其他人是如何处理这个问题的。模式:我编写了一个服务,它在采用委托(delegate)实例的静态函数中执行异步请求。委托(delegate)实例符合需要实现成功和失败方法的协议(protocol)。我设计了一个点击Google.com的示例。请忽略此示例中的类型安全问题。我正在运行的用于访问端点并解析JSON的实际代码更安全。

ios - Swift 协议(protocol)和类的弱引用

如果我有协议(protocol):protocolSomeProtocol{funcdoSomething()}在辅助类中,我引用了一个协议(protocol)变量:classsomeClass{vardelegate:SomeProtocol?}因为SomeProtocol没有用:class标记,所以假设delegate可以是任何值类型(结构和枚举)不需要weakvar因为值类型不能创建强引用。事实上,编译器不允许weakvar除了类类型之外的任何东西。但是,没有什么能阻止您将类设置为委托(delegate),如果协议(protocol)未标记为:class(如SomeProtoco

ios - 优化捕获列表

有这样的事吗?下面这两个有区别吗?一个比另一个更“正确”吗?所有对象都是self的属性(假设是一个ViewController),并且与self具有相同的生命周期。我们可以引入一个生命周期比self更短的对象,这将是weak,但同样的问题也适用。objectOne.doSomething{[unownedself]inself.objectTwo.finish()self.tableView.reloadData()//self.someDelegate?.didFinishSomething()}对比objectOne.doSomething{[unownedobjectTwo=se

ios - UIVideoEditorController 委托(delegate)方法调用了两次

我正在使用UIVideoEditorController,但成功委托(delegate)方法为我调用了两次。然而,所有传递对象的所有指针都告诉它发送完全相同的数据。leteditor=UIVideoEditorController()editor.videoMaximumDuration=10.0editor.videoQuality=.typeIFrame1280x720editor.delegate=selfeditor.videoPath=//somepathgoeshereself.present(editor,animated:true,completion:nil)然后下面

delegates - 通过 Swift 访问委托(delegate)的正确方法是什么?

我正在尝试模拟使用Swift访问对象委托(delegate)的Objective-C模式。通常我会将协议(protocol)放在两个UIViewController之间共享的.h中。目的:调用委托(delegate)(主机)解除(推送的)UIViewController。问题:无法访问委托(delegate)的hello()。以下代码可以编译,但出现运行时错误:未知委托(delegate)方法(见下文)。主机/调用(委托(delegate))对象:importUIKitclassMainViewController:UIViewController,ProtocolNameDelega

ios - Swift:我的委托(delegate)协议(protocol)方法需要在另一个 View Controller 上执行

这是一个非常令人困惑的问题,所以我会尽力解释它。我有ViewControllerA、B、C、D和E我不确定我说的对不对,但换个说法,E需要与A对话,但A和E之间没有segue来设置委托(delegate)。A>B>C>D>E>A有人告诉我,当你在swift中使用委托(delegate)来访问ViewController之间的数据时,你必须准备好一些东西:为对象B定义委托(delegate)协议(protocol)。给对象B一个可选的委托(delegate)变量。这个变量应该很弱。让对象B在发生有趣的事情时向它的委托(delegate)发送消息发生,例如用户按下取消或完成按钮,或者当它需