0

我正在尝试创建一个UIButtonin 代码,并且此代码在某些方法中,这些方法将从某个类中调用。

这是创建按钮的方法

-(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];
4

2 回答 2

1

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

[[UIViewController alloc] initWithNibName:@"someNibName" bundle:nil];

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

于 2012-06-28T13:45:55.300 回答
1

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

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

于 2012-06-28T13:47:30.993 回答