2010-08-23 58 views
0

我正在實施一個操作表。當我按下「確定」按鈕時,做到這些,按「取消」返回。 「ok」按鈕工作正常,但是當我按下「取消」按鈕時,沒有任何反應,它不收回或做任何事情,只是掛在操作單視圖。按取消按鈕不收回

下面是我的代碼:

UIBarButtonItem *clearButton = [[[UIBarButtonItem alloc] initWithTitle:@"Clear  History" 
                     style:UIBarButtonItemStyleBordered 
                   target:self 
                   action:@selector(ClearHistoryAction:)] autorelease]; 
self.navigationItem.leftBarButtonItem = clearButton; 

當我點擊和發射動作片:

- (IBAction)ClearHistoryAction:(id)sender 
    { 
UIActionSheet *actionSheet = [[UIActionSheet alloc] 
           initWithTitle:@"Clear History?" 
           delegate:self 
           cancelButtonTitle:@"Cancel" 
           destructiveButtonTitle:@"OK" 
           otherButtonTitles:nil]; 


// use the same style as the nav bar 
actionSheet.actionSheetStyle = self.navigationController.navigationBar.barStyle;  

[actionSheet showInView:self.view]; 
    [actionSheet release]; 


    } 

如果選擇確定這樣做:

要的導航欄上創建按鈕

- (void)actionSheet:(UIActionSheet *)actionSheet 

didDismissWithButtonIndex:(NSInteger) buttonIndex 
    { 
if (!buttonIndex == [actionSheet cancelButtonIndex]) 
{ 

    //do what i want here! 
} 
    } 

在頭文件中,UIActionSheetDelegate包含在@interface中。

回答

0

我不知道這是否會解決這個問題,但你會想要做buttonIndex != [actionSheet cancelButtonIndex](檢查不等於)代替!buttonIndex == [actionSheet cancelButtonIndex](反轉buttonIndex(!),並檢查,如果這是相同的)。

0

您需要使用showFromBarButtonItem而不是showInView。問題是取消按鈕被另一個視圖覆蓋 - 可能是一個工具欄或tabbar - 所以它沒有得到你認爲應該得到的觸摸事件。有時也應該使用showFromTabBar和showFromToolbar(請參閱UIActionSheet類的參考)。

1

晚,但一個可能的解釋是:

似乎是使用TabBar的問題。如果你打電話UIActionSheet的

[sheet showInView:self.view] 

從視圖控制器是一個UITabViewController的孩子,然後 命中測試上的取消按鈕,在位於的TabBar的視圖上方的 UIActionSheet的那部分失敗。

如果您改爲傳入UITabBarController的視圖,則UIActionSheet將按預期方式工作。

[sheet showInView:self.parentViewController.tabBarController.view]; 

更詳細的解釋在這裏: UIActionSheet cancel button strange behaviour