【发布时间】:2015-08-04 09:59:21
【问题描述】:
我有一个 objc uiviewcontroller,它在模态中对 swift uiviewcontroller 执行 segue。我在 objc 文件中创建了委托,但我无法从 swift 文件中调用 objc 中的方法。所有文件接缝都可以,但是在调用 delegate.function 时,我在 swift 文件中执行错误。
objc
#import "Cliente-Swift.h"
@interface ViewController () <gameDelegate>
@end
(...)
else if ([[segue identifier] isEqualToString:@"segueToGame"]) {
//jump to main vgame controller
GameViewController *gameVC = [segue destinationViewController];
gameVC.mydelegate = self;
}
斯威夫特GameViewController
@objc protocol gameDelegate {
func dismissGame()
}
class GameViewController: UIViewController {
var mydelegate: gameDelegate! = nil
override func viewDidLoad() {
super.viewDidLoad()
let scene = MainMenuScene(size:CGSize(width: 1536, height: 2048))
//let scene = GameScene(size:CGSize(width: 1536, height: 2048))
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.showsPhysics = true;
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
override func prefersStatusBarHidden() -> Bool {
return true
}
func sairDoJogo() {
print("mydelegate = \(mydelegate!)")
mydelegate!.dismissGame()
错误的 exec 是调用 objc 函数dismissGame的地方
【问题讨论】:
-
您在哪里将 self 分配给您的代表? self.mydelegate = 自我
-
在prepareForSegue游戏中VC.mydelegate = self;
标签: objective-c swift delegates