2012-11-01 34 views
0

我的iOS應用程序在單個視圖控制器上有13個按鈕。點擊他們每個人打開一個popovercontroller。不是一次全部。蘋果規則,我知道。你點擊你選擇的一個,然後解僱它,併爲其他按鈕做,繼續前進。現在我有一個代表,告訴我我在彈窗上選擇了什麼選項。像Button1 popovervalues-(1,2,3)Button2 popovervalues-(a,b,c)。現在委託中的方法告訴我選擇了1或選擇了a。但它不告訴我Button1被點擊或button2。我想知道如何獲得按鈕控件的名稱/或只是現在的按鈕就足夠了。有什麼財產,我可以告訴哪個按鈕被點擊?我看到了popovercontroller的contentviewcontroller,inputview,navigationcontroller等,但都沒有幫助我到達被點擊的按鈕。我想知道,因爲如果在Button1的彈出窗口中選擇了選項1,那麼我必須禁用Button10。因此,瞭解選擇哪個按鈕的選項將簡化用戶選擇(實際上它是一項要求)。請讓我知道是否需要更多信息。謝謝..從彈出式控制器獲取按鈕控件ios

回答

0

您是否通過界面構建​​器連接按鈕?如果是這樣,那麼它應該通過IBAction方法連接。

- (IBAction)someAction:(id)sender { 
    UIButton *buttonPressed = (UIButton *)sender; 
    //Now you have the button you have pressed 
} 

如果以編程方式所做的按鈕,在選擇位

[myButton addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchDragInside]; 

您可以用IBAction爲像以前一樣用同樣的方法someAction後 NB結腸添加目標,或者你可以使你自己的無效方法,無論哪種方式,發件人是按鈕,只需要投它然後使用它。

希望這會有所幫助。

+0

@ mashdup.Thanks.I應該讓我自己更清楚。我的設置是這樣的 - (IBAction)btnBCoverClick:(UIButton *)sender {\t \t NSArray * tempArray = [self GetChildCodes:S_B_C]; \t \t [self showPopOver:tempArray ButtonPass:sender]; (無效)optionSelected :(NSString *)選項 { NSLog(@「所選的值是%@」,選項);我想知道哪個按鈕被點擊。我有12個更多的按鈕操作。如果需要更多的信息告訴我。謝謝。 – RookieAppler

+0

爲什麼不傳遞按鈕,你把它傳遞給popover,爲什麼不把它傳遞迴optionselected:(nsstring *)選項withButton:(UIButton *)passedButton {... – mashdup

0

使用按鈕的標籤值。設置一個數字並在動作方法中檢查它:

- (IBAction)buttonAction:(id)sender { 
    UIButton *buttonPressed = (UIButton *)sender; 
    if(buttonPressed.tag == 1) { 
     //Do this 
    } 
} 
+0

@ Dancreek.Thanks.I應該做出我自己更清楚。我的設置是這樣的 - (IBAction)btnBCoverClick:(UIButton *)sender {\t \t NSArray * tempArray = [self GetChildCodes:S_B_C]; \t \t [self showPopOver:tempArray ButtonPass:sender]; (無效)optionSelected :(NSString *)選項 { NSLog(@「所選的值是%@」,選項);我想知道哪個按鈕被點擊。我有12個更多的按鈕操作。如果需要更多的信息告訴我。謝謝。 – RookieAppler