小编Jon*_* H.的帖子

如何从GameScene中的ViewController调用方法

我有一个方法,在我的viewController中有一个自定义segue,如下所示:

func gameOver() {
    performSegueWithIdentifier("GameOver", sender: nil)
}
Run Code Online (Sandbox Code Playgroud)

我在GameScene.swift中调用了这样的方法:

 GameViewController().gameOver()
Run Code Online (Sandbox Code Playgroud)

我仔细检查了segue的名字,这是正确的.每当我在我的GameScene.swift文件中调用它时,我得到SIGABRT消息,我不知道为什么.我尝试只使用println()消息调用该函数,并且它有效.

关于为什么会发生这种情况以及如何在GameScene.swift文件中成功调用该方法的任何建议将不胜感激.

谢谢!

PS这里是崩溃日志:

2015-01-28 21:59:46.181 RunawaySquare[95616:3907041] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<RunawaySquare.GameViewController: 0x7fe4305c7890>) has no segue with identifier 'GameEnd''
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010d461f35 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010f39ebb7 objc_exception_throw + 45
    2   UIKit                               0x000000010e20dd3b -[UIViewController shouldPerformSegueWithIdentifier:sender:] + 0
    3   RunawaySquare                       0x000000010d2683b2 _TFC13RunawaySquare18GameViewController8gameOverfS0_FT_T_ + 914
    4   RunawaySquare                       0x000000010d261af0 _TFC13RunawaySquare9GameScene12touchesBeganfS0_FTCSo5NSSet9withEventCSo7UIEvent_T_ + 1808
    5   RunawaySquare                       0x000000010d261c3f _TToFC13RunawaySquare9GameScene12touchesBeganfS0_FTCSo5NSSet9withEventCSo7UIEvent_T_ + 79
    6   SpriteKit …
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller ios sprite-kit skscene swift

8
推荐指数
2
解决办法
1万
查看次数

使用NSBezierPath在NSView上绘制圆角很差

在ViewController的主NSView中,我使用重写了func drawRect(dirtyRect: NSRect)在主视图上实现圆角的方法NSBezierPath。用同样的方法,我还指定了主视图的渐变背景。

override func drawRect(dirtyRect: NSRect) {

    let path: NSBezierPath = NSBezierPath(roundedRect: self.bounds, xRadius: 18.0, yRadius: 18.0)
    path.addClip()

   let gradient = NSGradient(startingColor: NSColor(hexColorCode: "#383838"), endingColor: NSColor(hexColorCode: "#222222"))
   gradient.drawInRect(self.frame, angle: 90)
}
Run Code Online (Sandbox Code Playgroud)

下图说明了出现的问题:

该图显示了视图角之一。圆角的倒圆仅部分成功,因为仍然有一个白色圆角伸出到窗口的圆角之外。

如果有人有更好的方法设置窗口的拐角半径,我会接受这样的建议。我对此事进行了大量研究,但是这种解决方案似乎是最简单的。

非常感谢您提供有关如何解决此问题的建议。

macos nsview swift

5
推荐指数
1
解决办法
1328
查看次数

UIView出现错误的中心位置

在下面的函数中,我定义了UIView的所有必要特征:

func OpenController() {
    var gameOverView: UIView = UIView()

    gameOverView.center = super.view.center
    gameOverView.frame.size = CGSize(width: 200, height: 300)
    gameOverView.backgroundColor = UIColor.grayColor()

    self.view.addSubview(gameOverView)
}
Run Code Online (Sandbox Code Playgroud)

即使我将UIView"gameOverView"的中心定义为它所驻留的viewcontroller的中心,它也会出现在viewcontroller中心的一个角落,而不是在viewcontroller中居中.我已经尝试了各种其他方法来定义位置(NSLayoutConstraints,frame.x,frame.y等),但都有这个结果.

如果有人能告诉我为什么会发生这种情况以及如何将UIView置于其父视图控制器中,我将非常感激!

xcode uiviewcontroller ios swift xcode6

3
推荐指数
1
解决办法
4841
查看次数

在后台线程上的NSBlockOperation之后立即在主线程上运行一个块

在我的项目中,我使用后台线程运行一个操作NSBlockOperation:

var operationQueue = NSOperationQueue()
var iop = NSBlockOperation(block: { self.reloadSize() /*calculation...*/ })
operationQueue.addOperation(iop)
Run Code Online (Sandbox Code Playgroud)

在后台线程中的计算完成后,我需要立即调用:table.reloadData()在NSTableView上.我会在同一个线程中执行此操作,但是,由于自动布局问题,必须在主线程上重新加载表.如何跨两个线程完成这种异步关系?

macos cocoa multithreading grand-central-dispatch swift

2
推荐指数
1
解决办法
2708
查看次数