UIActionsheet не увольнять

У меня есть 3 кнопки в моем UIActionsheet. Я хочу одну кнопку отмены внизу.

Я также хочу, чтобы все кнопки могли отклонять UIActionsheet.

В настоящее время никто из них не делает эту работу за меня.

Вот как я это отображаю:

UIActionSheet *actionSheet = nil;
NSArray *otherButtons = nil;


otherButtons = [NSArray arrayWithObjects:@"Button1", @"Button2", @"Button3",
                     nil];       

actionSheet = [[UIActionSheet alloc] initWithTitle:title
                                          delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil, nil];


for( NSString *btntitle in otherButtons)
{
    [actionSheet addButtonWithTitle:btntitle];
}    

[actionSheet addButtonWithTitle:@"Cancel"];
actionSheet.cancelButtonIndex = actionSheet.numberOfButtons - 1;

actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
[actionSheet showInView:self.view];

В моем делегате я делаю это:

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
      //some code
      [actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
}

Но это не увольняет. Я не хочу менять свой дизайн и положение каких-либо кнопок. Что я должен делать?

5 ответов

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

    [actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
    [self performSelector:@selector(OtherOperations) withObject:nil afterDelay:0.0];

}

-(void)OtherOperations{      //some code
}

Будьте осторожны при открытии листа действий с lpgr. Только откройте его на "Начал", а не снова на "Завершено".

- (void) handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
    CGPoint p = [gestureRecognizer locationInView:self.tblYourVids];

    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        NSIndexPath *indexPath = [self.aTable indexPathForRowAtPoint:p];
        if (indexPath == nil)
            NSLog(@"long press on table view but not on a row");
        else {
            NSLog(@"long press on table view at row %d", indexPath.row);
            self.selectedCell = [self.aTable cellForRowAtIndexPath:indexPath];
            DLog(@"open action sheet only once");
            [self showActionSheet];
        }
    } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        // eat this one
    }
}

Вы должны добавить это в свой.h файл.

 <UIActionSheetDelegate>

Также добавьте эту строку в ваш.m файл.

 actionSheet.delegate = self;

Дайте мне знать, это работает или нет. Если работает, примите это как правильный ответ

Просто попробуйте использовать приведенный ниже код. он будет автоматически отклонен.

UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@""
                                                       delegate:self
                                              cancelButtonTitle:@"cancel"
                                         destructiveButtonTitle:@"Printer"
                                              otherButtonTitles: nil];

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


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

дайте мне знать, работает ли он или нет

Удачного кодирования!!!!!

Это не правильный способ отменить UIActionSheet во-первых, вы должны отключить по умолчанию UIActionSheet от javascipt и пройти через эту сеть

http://www.icab.de/blog/2010/07/11/customize-the-contextual-menu-of-uiwebview/

Другие вопросы по тегам