2016-04-26 78 views
-3

我试图实现播放/暂停和停止按钮在简单的秒表应用程序的工具栏中。在http://swiftstub.com/722226472查看代码我遇到了一些奇怪的行为:首先播放按钮什么也不做。如果我点击停止按钮,图标消失,然后播放/暂停切换并正常工作。建议?我使用的是最新的迅速和Xcode的另一个,但具体的播放/暂停问题

+0

您可以将您的代码与其他发布在诸如Ray之类的博客上的代码进行比较,而不是在此处询问。 –

+1

请不要将外部链接到代码 - 这些网站往往会消失 - 将相关代码放在问题中。 –

回答

0

的目标应该是在这两个系的自我(不为零):

var playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: nil, action: Selector("playButtonPressed")) 

var pauseButton = UIBarButtonItem(barButtonSystemItem: 
    UIBarButtonSystemItem.Pause, target: nil, action: Selector("pauseButtonPressed")) 

EDIT(基于评论):你应该这些线移动到一个init (),因为你不能在这个初始化的var中使用self进行初始化。

var playButton: UIBarButtonItem! 
var pauseButton: UIBarButtonItem! 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: Selector("playButtonPressed")) 
    pauseButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: Selector("pauseButtonPressed")) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    let toolBarItems = [playButton] 
    toolbar.setItems(toolBarItems, animated: false) 
} 

因为你从来没有在添加了这些,首先,我怀疑你只是在你的故事板未挂接到任何其他按钮。然后在第一次呼叫时将其替换为停止。

+0

我只有两个栏按钮项目:播放和停止。如果我在目标中将nil替换为self,我会得到:(!)'无法将类型'NSObject - >() - > ViewController'的值转换为期望的参数类型'AnyObject?' –

+0

我添加了更多信息 - 将var初始化到init(),以便您可以访问self。 –

+0

谢谢,Lou。我试图将它们移动到init()中,但无法弄清楚如何正确执行。 - 对不起,我只在第三天学Swift。 –