在Objective C方法中创建UIButton

时间:2012-06-28 13:29:52

标签: objective-c ios uibutton

我正在尝试在代码中创建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];

2 个答案:

答案 0 :(得分:1)

可能是你的视图目前尚未从Nib加载。如果您通过实例化

创建了视图
[[UIViewController alloc] initWithNibName:@"someNibName" bundle:nil];

将创建视图控制器,并开始异步加载Nib中的视图。因此,如果UIViewController被实例化,那并不意味着UIView。所以,这就是为什么你的按钮在从-viewDidLoad:回调创建时工作的原因。

答案 1 :(得分:1)

使用ViewController创建新的ViewController *m2 = [[ViewController alloc] init];时,它与处理屏幕的ViewController不同。

您应该使用应用程序启动时创建的那个,而不是分配ViewController