删除以编程方式添加的 UIButton

Remove Programmatically Added UIButton

在我的视图控制器的 viewDidLoad 中,我添加了一个按钮:

        let tutorialButton = UIButton.buttonWithType(UIButtonType.System) as! UIButton
        tutorialButton.frame = CGRectMake(0, (UIScreen.mainScreen().bounds.size.height/4)*3, UIScreen.mainScreen().bounds.size.width, 20)
        tutorialButton.titleLabel?.textAlignment = NSTextAlignment.Center
        tutorialButton.backgroundColor = UIColor.clearColor()
        tutorialButton.setTitle("View Quick Tutorial", forState: UIControlState.Normal)
        tutorialButton.addTarget(self, action: "giveTutorial:", forControlEvents: UIControlEvents.TouchUpInside)

        self.view.addSubview(tutorialButton)

按钮出现在我想要的位置,这部分效果很好。但是在它达到它的目的并且我不再希望它可见之后,如何从视图中删除按钮?我研究过它通常是这样完成的:

buttonName.removeFromSuperview

但是,当我输入 buttonName 时,它​​无法识别该按钮。我猜是因为没有 IBOutlet。那么我可以在方法中添加什么代码来删除此按钮?

声明一个 class 变量(不是 IBOutlet)来保存按钮引用。

var tutorialButton : UIButton?

在代码中填充 button 并使用

删除
tutorialButton?.removeFromSuperview

原来我的问题不是我输入了什么代码,而是我输入的地方。因为我希望在加载时添加视图,所以我将整个代码块添加到我的 viewDidLoad 中。但是,这条线不属于那里:

let tutorialButton = UIButton.buttonWithType(UIButtonType.System) as! UIButton

通过在 viewDidLoad 中声明 tutorialButton,我使其不在 viewDidLoad 之外 accessible/reference-able。要解决这个问题,我所要做的就是将该行移到 viewDidLoad 之外。

let tutorialButton = UIButton.buttonWithType(UIButtonType.System) as! UIButton

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

如果您打算稍后从 viewDidLoad 以外的方法编辑或删除视图,这是需要注意的关键事项。现在我进行了更改,我可以将 removeFromSuperview 调用添加到 buttonPress 并且效果很好:

tutorialButton?.removeFromSuperview