删除以编程方式添加UIButton

时间:2015-09-01 19:14:12

标签: ios swift uibutton iboutlet

在我的视图控制器的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。那么我可以在一个方法中找到哪些代码可以删除此按钮?

2 个答案:

答案 0 :(得分:5)

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

var tutorialButton : UIButton?

在代码中填充button并使用

删除
tutorialButton?.removeFromSuperview

答案 1 :(得分:2)

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

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

通过在viewDidLoad中声明tutorialButton,我使它在viewDidLoad之外无法访问/引用。要解决这个问题,我所要做的就是将该行移到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