删除以编程方式添加的 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
在我的视图控制器的 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