Ios 仅在代码中添加按钮?

Ios 仅在代码中添加按钮?,ios,iphone,swift,uibutton,Ios,Iphone,Swift,Uibutton,我正在尝试仅在代码中添加按钮。在Xcode模拟器中,它可以完美地工作,但在我的设备上无法工作: fatal error: unexpectedly found nil while unwrapping an Optional value 我的代码: @IBOutlet weak var playButton: UIButton! override func viewDidLoad() { super.viewDidLoad() let image = UIImage(na

我正在尝试仅在代码中添加按钮。在Xcode模拟器中,它可以完美地工作,但在我的设备上无法工作:

fatal error: unexpectedly found nil while unwrapping an Optional value
我的代码:

@IBOutlet weak var playButton: UIButton!

override func viewDidLoad() {

    super.viewDidLoad()

    let image = UIImage(named: "playButton.png") as UIImage

    playButton   = UIButton.buttonWithType(UIButtonType.System) as UIButton
    playButton.frame = CGRectMake(10, 10, 100, 100) // crash is here
    playButton.center = CGPointMake(self.frame.width/2, self.frame.height/1.7)

    playButton.addTarget(self, action: "transition:", forControlEvents: UIControlEvents.TouchUpInside)
    playButton .setBackgroundImage(image, forState: UIControlState.Normal)

    self.view?.addSubview(playButton)

}

有人能帮我吗

这毫无意义-如果您使用@IBOutlet,这意味着您的按钮是在情节提要中创建的,因此您不需要初始化它:


删除上面的所有代码,改为在情节提要中进行设置@iAction应该是一个单独的方法,连接到情节提要中按钮内部的触控按钮。

这没有任何意义-如果您使用@IBOutlet,这意味着您的按钮是在情节提要中创建的,因此您无需对其进行初始化:

删除上面的所有代码,改为在情节提要中进行设置@IBAction应该是一个单独的方法,它连接到故事板中按钮内部的触控按钮。

“展开可选值”似乎指的是在您的var声明旁边。。。如果您改用怎么办

来自Swift文件

Trying to use ! to access a non-existent optional value triggers a runtime error. 
Always make sure that an optional contains a non-nil value before using ! to force-unwrap its value.
试试这个:

weak var playButton : UIButton?
再加上?当访问它时,在它之后-就像您使用
self.view?.addSubview
或使用本地强制展开它一样在您知道已创建的方法中

(但我不确定,仍在学习语言…:-)

“展开可选值”似乎指的是在您的var声明旁边。。。如果您改用怎么办

来自Swift文件

Trying to use ! to access a non-existent optional value triggers a runtime error. 
Always make sure that an optional contains a non-nil value before using ! to force-unwrap its value.
试试这个:

weak var playButton : UIButton?
再加上?当访问它时,在它之后-就像您使用
self.view?.addSubview
或使用本地强制展开它一样在您知道已创建的方法中

(虽然我不确定,但仍在学习语言…:-)

在Xcode模拟器中,它工作得很好,但在我的设备上却不行

这通常意味着您的代码与文件的实际名称不匹配。MacOS X文件系统通常不区分大小写,而iOS文件系统区分大小写。因此,如果您的图像文件的名称类似于
PlayButton.png
PlayButton.png
,但您指定了
PlayButton.png
,那么它通常可以在模拟器上工作,但不能在设备上工作

确保代码中的文件名与项目中的文件匹配。

在Xcode模拟器中,它工作得很好,但在我的设备上却不行

这通常意味着您的代码与文件的实际名称不匹配。MacOS X文件系统通常不区分大小写,而iOS文件系统区分大小写。因此,如果您的图像文件的名称类似于
PlayButton.png
PlayButton.png
,但您指定了
PlayButton.png
,那么它通常可以在模拟器上工作,但不能在设备上工作



确保代码中的文件名与项目中的文件相匹配。

您的设备无法运行是什么意思?说它不工作是没有用的。我无法启动它,我有一个致命错误:“致命错误:在展开可选值时意外发现了nil”您提供的代码在哪里?此代码是否在viewController的
viewDidLoad
方法中?是的。你可以看到我的编辑不应该写在它之外吗?而且
self.frame
确实是
self.view.bounds
,不是吗?你说它在你的设备上不工作是什么意思?说它不工作是没有用的。我无法启动它,我有一个致命错误:“致命错误:在展开可选值时意外发现了nil”您提供的代码在哪里?此代码是否在viewController的
viewDidLoad
方法中?是的。你可以看到我的编辑不应该写在它之外吗?另外,
self.frame
确实是
self.view.bounds
,不是吗?谢谢!我知道区分大小写,但这不是问题所在。我查过了没问题谢谢!我知道区分大小写,但这不是问题所在。我查过了没问题谢谢!我删除了@IBOutlet,因为我只需要代码中的按钮,它就是这样工作的。你知道如何在场景中添加按钮吗?当我在游戏场景中添加代码(不带@IBOutlet)时,按钮不会出现。你们知道为什么吗?好的,若你们是指SpriteKit的场景,我会查一下答案谢谢!我删除了@IBOutlet,因为我只需要代码中的按钮,它就是这样工作的。你知道如何在场景中添加按钮吗?当我在游戏场景中添加代码(不带@IBOutlet)时,按钮不会出现。你们知道为什么吗?好的,若你们指的是SpriteKit的场景,我会检查答案