2013-06-20 12 views
58

Chciałbym stworzyć tego rodzaju menu, oczywiście z innymi przyciskami menu. Czy istnieje jakiś domyślny kontroler widoku, który go reprezentuje, czy też muszę uzyskać obrazy i utworzyć je samodzielnie.Tworzenie szablonu UIActionSheet

enter image description here

+3

tytuł i popularność tej kwestii jest znacznie lepsza niż dwukrotnie. Byłoby miło ponownie otworzyć to pytanie, aby można było dodać zaktualizowane odpowiedzi. – Suragch

+2

Głosuj, aby ponownie otworzyć. – Stunner

+0

@Suragch masz rację. jest bardziej pomocny i zrozumiały niż inne linki –

Odpowiedz

11

Spójrz na dokumentacji UIActionSheet.

NSString *actionSheetTitle = @"Action Sheet Demo"; //Action Sheet Title 
NSString *destructiveTitle = @"Destructive Button"; //Action Sheet Button Titles 
NSString *other1 = @"Other Button 1"; 
NSString *other2 = @"Other Button 2"; 
NSString *other3 = @"Other Button 3"; 
NSString *cancelTitle = @"Cancel Button"; 
UIActionSheet *actionSheet = [[UIActionSheet alloc] 
           initWithTitle:actionSheetTitle 
           delegate:self 
           cancelButtonTitle:cancelTitle 
           destructiveButtonTitle:destructiveTitle 
           otherButtonTitles:other1, other2, other3, nil]; 
[actionSheet showInView:self.view]; 
169

Musisz użyć UIActionSheet. Najpierw należy dodać UIActionSheetDelegate do pliku ViewController.h.

Następnie można odwoływać się actionsheet z:

UIActionSheet *popup = [[UIActionSheet alloc] initWithTitle:@"Select Sharing option:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles: 
         @"Share on Facebook", 
         @"Share on Twitter", 
         @"Share via E-mail", 
         @"Save to Camera Roll", 
         @"Rate this App", 
         nil]; 
    popup.tag = 1; 
    [popup showInView:self.view]; 

Następnie trzeba obsłużyć każdego z połączeń.

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

    switch (popup.tag) { 
    case 1: { 
     switch (buttonIndex) { 
      case 0: 
       [self FBShare]; 
       break; 
      case 1: 
       [self TwitterShare]; 
       break; 
      case 2: 
       [self emailContent]; 
       break; 
      case 3: 
       [self saveContent]; 
       break; 
      case 4: 
       [self rateAppYes]; 
       break; 
      default: 
       break; 
     } 
     break; 
    } 
    default: 
     break; 
} 
} 

ta została zaniechana na iOS 8.x https://developer.apple.com/documentation/uikit/uialertcontroller#//apple_ref/occ/cl/UIAlertController

+5

+! za to, że jako jedyny nazywa to "UIActionSheet" (a także dostarcza dobrą odpowiedź). – rmaddy

+1

Dosłownie pracowałem nad moją aplikacją, gdy zobaczyłem pytanie! Pochodzi z mojego kodu dosłownie;) – ApolloSoftware

+1

działa również bez dodawania UIActionSheetDelegate .. Chcę wiedzieć, jak ... – Nepster

5

Jest zwane UIActionSheet: utworzyć jeden taki sposób:

NSString *actionSheetTitle = @"Action Sheet Demo"; //Action Sheet Title 
NSString *destructiveTitle = @"Destructive Button"; //Action Sheet Button Titles 
NSString *other1 = @"Other Button 1"; 
NSString *other2 = @"Other Button 2"; 
NSString *other3 = @"Other Button 3"; 
NSString *cancelTitle = @"Cancel Button"; 
UIActionSheet *actionSheet = [[UIActionSheet alloc] 
           initWithTitle:actionSheetTitle 
           delegate:self 
           cancelButtonTitle:cancelTitle 
           destructiveButtonTitle:destructiveTitle 
           otherButtonTitles:other1, other2, other3, nil]; 
[actionSheet showInView:self.view]; 

Wdrożenie UISctionSheetDelegate reagować na działania przycisku.

Spójrz na tym tutorialu o więcej informacji: http://mobile.tutsplus.com/tutorials/iphone/uiactionsheet_uiactionsheetdelegate (Code jest z tego poradnika)