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

View Controllerよりも作成され、Nibからビューを非同期的にロードし始めます。したがって、UIViewControllerがインスタンス化されたとしても、それは is という意味ではありませんUIView。そのため、-viewDidLoad:コールバックから作成されたときにボタンが機能します。

于 2012-06-28T13:45:55.300 に答える
1

新しいものViewControllerを作成するとき、それは画面を処理しているものViewController *m2 = [[ViewController alloc] init];と同じではありません。ViewController

を割り当てる代わりにViewController、アプリケーションの起動時に作成されたものを使用する必要があります。

于 2012-06-28T13:47:30.993 に答える