UIActionSheet,如何通过单击解雇它?

时间:2011-08-05 08:34:19

标签: iphone objective-c uiactionsheet

UIActionSheet,如何通过单击解雇它? 我必须单击一个按钮2次以便它被解雇,我应该怎么做才能让它在第一次点击后被解雇?!这是我的代码:

-(void)buttonHeld:(id)sender
{



    UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Delete Contact?!" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete" otherButtonTitles: nil];

    popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
    [popupQuery showInView:self.view];
    [popupQuery release];




}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {


  if (buttonIndex == 0) {

 NSLog(@"Delete button clicked Button Clicked");


    else if (buttonIndex == 1) {

   NSLog(@"Cancel Button Clicked");
   } 

}

5 个答案:

答案 0 :(得分:4)

根据您的方法“buttonHeld”的名称,我的假设是您尝试从UILongPressGestureRecognizer启动UIActionSheet。如果希望它按预期工作,则需要使用下面列出的代码。问题源于UILongPressGestureRecognizer是一个“连续手势”,它会多次触发并进入几个不同的状态。您需要监视正确的状态,然后加载UIActionSheet。我有完全相同的问题,这就是为我解决的问题。

- (IBAction) buttonHeld:(UILongPressGestureRecognizer *)sender {
    if (sender.state == UIGestureRecognizerStateBegan) {
        UIActionSheet *popupQuery = [[UIActionSheet alloc] 
                                      initWithTitle:@"Delete Contact?!" 
                                           delegate:self 
                                  cancelButtonTitle:@"Cancel" 
                             destructiveButtonTitle:@"Delete" 
                                  otherButtonTitles:nil];

        popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
        [popupQuery showInView:self.view];
    }
}

答案 1 :(得分:3)

这就是我如何解雇动作表......

  [actionSheet dismissWithClickedButtonIndex:0 animated:YES];

希望这有帮助

答案 2 :(得分:0)

当您分配动作表时,无需在此委托中声明您已取消取消按钮默认情况下将ActionSheet忽略为此类

[[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:btnTitle,@"Send for a date range",nil];

来自任何其他事件,您可以使用此方法

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

在你的代码中,如果是阻塞,则会出现语法错误。

答案 3 :(得分:0)

我花了几下才取消它。问题最终是我附加的视图。

[action showInView:self.view];

self.view仅在IB中引用。我将其更改为不同的视图并且有效。

答案 4 :(得分:0)

如果你正在开发iphone,它总是安全的使用:

  

[popupQuery showFromBarButtonItem:sender animated:YES]

或showFromTabBar:或showFromToolBar等,而不是showinView。

相关问题