2015-06-10 27 views
0

我已经阅读放样溢出了很多,看了关于与代码生成按钮YouTube视频,但我无法弄清楚如何if语句基于关闭按钮有一个。这是嵌套在另一个声明中,因为当一个问题与oringal是或否按钮回答我还有一个问题是问。如果代码语句生成按钮,斯威夫特

我:

var btn = UIButton(frame: CGRectMake(50, 50, 150, 20)); 
btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal); 
btn.setTitle("My Button Text!!", forState:UIControlState.Normal); 
btn.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside); 
self.view.addSubview(btn); 

func buttonTapped(sender: UIButton!) { 
    println("Button Tapped!!!") 
} 

但是,而不是打印 “按钮螺纹!!!”我收到一个“SIGABART”错误。我怎么能使用if语句而不是函数呢?有没有更好的方法来解决这个函数声明?

完整的代码是:

// 
// ViewController.swift 
// Living Vermont 
// 
// Created by Matthew Furtsch on 6/8/15. 
// Copyright (c) 2015 Matthew Furtsch. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController { 


    var label1: UILabel! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 



     label1 = UILabel() 
     label1.text = "Is it a plant?" 
     label1.font = UIFont.systemFontOfSize(36) 
     label1.sizeToFit() 
     //Label location quardnets 
     label1.center = CGPoint(x: 100, y: 0) 
     view.addSubview(label1) 
     UIView.animateWithDuration(1.5, delay: 0.0, usingSpringWithDamping: 0.2, initialSpringVelocity: 0.0, options: nil, animations: { 
      self.label1.center = CGPoint(x: 100, y: 0 + 40) 
     }, completion: nil) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func journal(sender: AnyObject) 
    { 

    } 
    @IBAction func noButton(sender: AnyObject) 
    { 
     label1.text = "no" 
     var btn = UIButton(frame: CGRectMake(50, 50, 150, 20)); 
     btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal); 
     btn.setTitle("My Button Text!!", forState:UIControlState.Normal); 
     btn.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside); 
     self.view.addSubview(btn); 

     func buttonTapped(sender: UIButton!) { 
      println("Button Tapped!!!") 
     } 
    } 
    @IBAction func yesButton(sender: AnyObject) 
    { 

     label1.text = "yes" 
     } 
} 
+0

如果你得到一个SIGABRT,什么是相关的错误消息,解释中止的原因是什么?请提供消息和堆栈跟踪。 – kbgn

+0

的代码,你提供的作品完全对我很好。也许这是Xcode中的一个错误...尝试重新启动它。 – LinusGeffarth

回答

0

我的猜测是,你buttonTapped函数嵌套在像viewDidLoad中的另一种方法。它需要是视图控制器类的顶级方法。移动你的buttonTapped方法了所以它是你的类中,而不是你的类中的任何方法内。

您应该编辑你的问题,包括你正在与堆栈跟踪沿着整个崩溃的消息。这可能有助于我们告诉发生了什么问题。