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