2012-06-28 60 views
0

我試圖在代碼中創建一個UIButton,並且此代碼在某些將從某個類中調用的方法中。在Objective C方法中創建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:該方法是在視圖控制器類,我把它從MyFacebooDelegate類 這裏是MyFacebooDelegate類的調用代碼:

ViewController *m2 = [[ViewController alloc] init]; 
[m2 createButton]; 
+1

你從哪裏叫它失敗? –

+0

它是在主線程上調用? –

+0

我從另一個班級調用此方法,但沒有出現任何錯誤,您對「主線程」的含義是什麼 –

回答

1

可能是你的觀點並沒有從筆尖在加載但時刻。如果您通過實例

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

比視圖控制器創建的視圖將被創建並開始從筆尖加載視圖是異步的。所以,如果UIViewController被實例化,那並不意味着UIView是。所以,這就是爲什麼你的按鈕從-viewDidLoad:回調創建時工作。

1

當您使用ViewController *m2 = [[ViewController alloc] init];創建新的ViewController時,處理屏幕的操作與ViewController不同。

而不是分配ViewController,您應該使用應用程序啓動時創建的那個。

+0

thnx ,,,所以我怎樣才能調用方法來繪製我的按鈕? –

+0

獲取對現有視圖控制器的引用,並將其用作'createButton'的目標。如何做到這一點完全取決於第一個'ViewController'如何加載到您的應用程序(根控制器?由導航控制器?擁有?)...? 。 –