从视图中删除按钮似乎很简单,但是它不起作用。
MyViewController.h
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController
@property (strong, nonatomic, readonly, getter = getMyButton) UIButton* myButton;
- (id) init;
- (id) getMyButton;
@end
MyViewController.m
#import "MyViewController.h"
@interface MyViewController ()
@end
@implementation MyViewController
@synthesize myButton = _myButton;
- (id) init
{
if([super initWithNibName: nil bundle: nil])
{
_myButton = nil;
}
return self;
}
- (id) getMyButton
{
if(!_myButton) _myButton = [self createMyButton];
return _myButton;
}
- (void) viewDidLoad
{
[super viewDidLoad];
UIButton* myButton = self.myButton;
[self.view addSubview: myButton];
}
- (void) didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (UIButton*) createMyButton
{
UIButton *button = [[UIButton alloc] init];
[button setTitle: @"My Button"
forState: UIControlStateNormal];
[button addTarget: self
action: @selector(myAction:)
forControlEvents: UIControlEventTouchUpInside];
button.frame = CGRectMake(10, 10, 100, 40);
return button;
}
- (void) myAction: (id) sender
{
[self.myButton performSelectorOnMainThread: @selector(removeFromSuperview) withObject: nil waitUntilDone: NO];
}
@end
但是没有运气。单击按钮根本不执行任何操作。
如果不是并发问题,那么可能是内存管理问题?我不知道这也许只是愚蠢的事情。
我尝试将以下行放入myAction方法中
NSLog(@"Test 1");
if(_startButton.superview) NSLog(@"Test 2");
仅记录“测试1”。也许这是一个线索,但我不知道的是为什么将按钮添加到视图并在屏幕上可见时,它没有超级视图
附加信息
我不知道这是否相关,但也许
我只是从开发人员程序中
updated Xcode
到最新版本(它最多支持iOS 7.0以前的版本,现在是7.1)。我刚刚开始在实际的iPhone上测试该应用程序(尽管在模拟器上测试时遇到相同的问题)
大约与此问题同时出现,我还注意到NSLog函数在AppDelegate applicationHasLaunched方法内部不起作用
谢谢
最佳答案
按钮是类家族,应使用[UIButton buttonWithType:]
创建
关于ios - RemoveFromSuperView在UIButton上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23109431/