2013-06-20 16 views
0

這是爲什麼?將多個UIButtons添加到相同的UIView只顯示最後添加的按鈕?

我已經看到有關此問題的帖子here,但我已經考慮過要在不同的x/y位置創建按鈕。

下面是我在做什麼:

UIButton * bt1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
bt1.frame = CGRectMake(40, 40, 20, 20); 

[bt1 setTitle:@"A" forState:UIControlStateNormal]; 
[bt1 addTarget:self action:@selector(buttonPushed) forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:bt1]; 

UIButton * bt2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
bt2.frame = CGRectMake(80, 80, 20, 20); 

[bt1 setTitle:@"B" forState:UIControlStateNormal]; 
[bt1 addTarget:self action:@selector(buttonPushed) forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:bt2]; 

謝謝!

+0

你有bt1而不是bt2 – nielsbot

+0

此代碼有效。如果您遇到問題,則需要包含更多背景信息並詳細說明您遇到的問題。 – geraldWilliam

+0

@nielsbot,你是對的,他在btn1上設置屬性兩次,但是兩個按鈕都被創建,如果你運行代碼,兩個按鈕都會出現在視圖中。 – geraldWilliam

回答

2

你有錯字,分配和創建按鈕BT2之後,你將所有的東西爲BT1

+0

謝謝,親切的先生!那是它=) – nmdias

1

是沒有錯的代碼。唯一可能需要更改的是,您正在設置bt1的屬性(標題和目標)兩次,並且您沒有設置bt2

+0

固定!謝謝,Apurv =) – nmdias

1

用簡單的方法來防止這種情況發生在同一範圍內的局部變量:使用另一個範圍。

{ 
UIButton * bt1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
bt1.frame = CGRectMake(40, 40, 20, 20); 

[bt1 setTitle:@"A" forState:UIControlStateNormal]; 
[bt1 addTarget:self action:@selector(buttonPushed) forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:bt1]; 
} 

{ 
UIButton * bt2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
bt2.frame = CGRectMake(80, 80, 20, 20); 

[bt1 setTitle:@"B" forState:UIControlStateNormal]; 
[bt1 addTarget:self action:@selector(buttonPushed) forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:bt2]; 
} 

編譯器會爲您捕獲錯誤。

+0

這是一個非常有趣的方法!謝謝=) – nmdias

相關問題