我正在尝试在代码中创建UIButton
,并且此代码在某些方法中将从某个类调用。
以下是创建按钮的方法
-(void)createButton
{
NSLog(@"createButton");
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Get Friends" forState:UIControlStateNormal];
[button setFrame:CGRectMake(100, 100, 100, 50)];
[button addTarget:self action:@selector(loadTableView) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
但它从未出现在视图中,出了什么问题?
编辑:如果我从viewDidLoad
调用此方法,那么它可以正常工作!
编辑2:该方法在ViewController类中,我从MyFacebooDelegate类调用它 这是来自MyFacebooDelegate类的调用代码:
ViewController *m2 = [[ViewController alloc] init];
[m2 createButton];
答案 0 :(得分:1)
可能是你的视图目前尚未从Nib加载。如果您通过实例化
创建了视图[[UIViewController alloc] initWithNibName:@"someNibName" bundle:nil];
将创建视图控制器,并开始异步加载Nib中的视图。因此,如果UIViewController
被实例化,那并不意味着UIView
。所以,这就是为什么你的按钮在从-viewDidLoad:
回调创建时工作的原因。
答案 1 :(得分:1)
使用ViewController
创建新的ViewController *m2 = [[ViewController alloc] init];
时,它与处理屏幕的ViewController
不同。
您应该使用应用程序启动时创建的那个,而不是分配ViewController
。