当我写下底部的Swift代码时,我得到了“额外的参数在调用中”。语法错误还是有其他问题?感谢。
Objective-C初始化器:
typedef void(^CameraSettingsBlock)(DBCameraView *cameraView, id container);
- (id) initWithDelegate:(id<DBCameraViewControllerDelegate>)delegate cameraSettingsBlock:(CameraSettingsBlock)block;
Swift初始化:
var cameraContainer = DBCameraContainerViewController(delegate: self, cameraSettingsBlock:{
(cameraView:DBCameraView, container:DBCameraContainerViewController) in
cameraView.photoLibraryButton.hidden = true
})
答案 0 :(得分:1)
知道了!我需要一个!使用DBCameraView并需要将DBCameraContainerViewController切换到AnyObject!。谢谢大家!
var cameraContainer = DBCameraContainerViewController(delegate: self, cameraSettingsBlock:{
(cameraView:DBCameraView!, container:AnyObject!) in
cameraView.photoLibraryButton.hidden = true
})
答案 1 :(得分:-1)
你可以使用这段代码,利用语法糖来定义一个闭包,当它是函数中的最后一个参数时:
var cameraContainer = DBCameraContainerViewController(delegate: self) { (cameraView, container) in
cameraView!.photoLibraryButton.hidden = true
}
或更简洁:
var cameraContainer = DBCameraContainerViewController(delegate: self) { $0!.photoLibraryButton.hidden = true }
我在两种情况下都使用类型推断来确定类型。在后一种情况下,$0
是传递给闭包的第一个参数的快捷方式。
让我知道它是否有效