IOS : Mam aplikację, która otwiera niektóre treści i dodałem przycisk na prawym pasku nawigacyjnym, który może usuwać treść wiadomości z zapisanego przechwytywania, Teraz chcę umieścić akcję potwierdzania zgodną z użytkownikiem przed usunięciem wiadomości, stworzyłem arkusz UIAction w następujący sposób:

sheet = [[UIActionSheet alloc] initWithTitle:@"Delete Message" delegate:self cancelButtonTitle:@"Cancel"   destructiveButtonTitle:@"Delete Message" otherButtonTitles:nil];
 // view sheet 
 [sheet showInView:self.view];
 NSLog(@"Button %d", buttonIndex);

Teraz jak mogę użyć tej wartości w mojej funkcji deleteContent? Moja funkcja usuwania to

-(void) deleteContent 
{
   if (buttonIndex=0)
     {
      [[NSFileManager defaultManager] removeItemAtPath:fileName error:&e];
     }
}

Moje pytanie brzmi, jak mogę zmienić to w jednej funkcji, którą można wywołać w jednym wywołaniu i robi to wszystko.

0
Dixit 25 wrzesień 2012, 05:52

2 odpowiedzi

Najlepsza odpowiedź

To nie jest sposób na zrobienie tego. Wywołaj funkcję z przycisku na pasku nawigacyjnym, aby wyświetlić arkusz akcji. Następnie zaimplementuj metodę actionSheetDidDismissWithButtonIdex UIActionSheetDelegate, aby zająć się faktycznym usunięciem.

EDYCJA: Jeśli potrzebujesz przekazać tożsamość elementu do usunięcia z metody powodującej wyświetlenie arkusza akcji, po prostu dodaj parametr do metody presentActionSheet i przekaż element.

1
geraldWilliam 25 wrzesień 2012, 06:01

Osoby mające ten sam problem:

Utwórz funkcję dla przycisku, który może wywoływać wyskakujące okienko w następujący sposób:

-(void)popUp
{

    sheet = [[UIActionSheet alloc] initWithTitle:@"Are you Sure?"
                                        delegate:self
                               cancelButtonTitle:@"Cancel"
                          destructiveButtonTitle:@"Delete Message"
                               otherButtonTitles:nil];
    // Show the sheet
    [sheet showInView:self.view];
    //[sheet release];
    NSLog(@"Button %d", buttonIndex);
}

A następnie utworzyć jeszcze jedną funkcję, która obsługuje usuwanie części na podstawie akcji wyskakującej, takiej jak ta:

   - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
    {
        if (buttonIndex == 0) {  //delete it

            //delete from database
            //delete from folder
            [[NSFileManager defaultManager] removeItemAtPath:fileName error:&e];
            //close
            [[self navigationController] popViewControllerAnimated: YES];
        }else if {
             NSLOG(@"USER said No");
        }

    }
0
Dixit 25 wrzesień 2012, 09:06