Dans mon application iOS, je présente une feuille UIAction à un utilisateur; cependant, l'UIActionSheet doit pouvoir présenter différents boutons pour différents cas (par exemple, si l'utilisateur n'exécute pas iOS 5, le support Twitter n'est pas disponible, donc ne pas afficher le bouton "Tweet this", si AirPrint n'est pas disponible, alors l'utilisateur peut n'imprimez pas, ne montrez donc pas le bouton "print", etc.) Pour le moment, j'ai implémenté cette méthode de façon très cérébrale, en utilisant essentiellement un tas d'instructions if-then-else (voir ci-dessous). Y a-t-il une façon plus propre de faire cela?(iOS/Objective-C) Meilleure façon d'ajouter de façon conditionnelle différents boutons à une feuille UIActionSheet?
if(NSClassFromString(@"TWTweetComposeViewController")) {
if ([TWTweetComposeViewController canSendTweet]) {
actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Options", @"Options string")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel button")
destructiveButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"Open in Safari", @"Open in Safari button"), NSLocalizedString(@"E-mail to a Friend", @"E-mail to a Friend button"), NSLocalizedString(@"Print", @"Print button"), NSLocalizedString(@"Tweet This", @"Tweet This button"), nil];
} else {
actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Options", @"Options string")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel button")
destructiveButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"Open in Safari", @"Open in Safari button"), NSLocalizedString(@"E-mail to a Friend", @"E-mail to a Friend button"), NSLocalizedString(@"Print", @"Print button"), nil];
}
} else {
actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Options", @"Options string")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel button")
destructiveButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"Open in Safari", @"Open in Safari button"), NSLocalizedString(@"E-mail to a Friend", @"E-mail to a Friend button"), NSLocalizedString(@"Print", @"Print button"), nil];
}
C'est beaucoup mieux que ce que j'avais avant. :) Merci! –
Assurez-vous simplement que les index des boutons sont toujours ce que vous attendez après avoir ajouté le bouton supplémentaire. – larsacus
Cela s'avère assez facile. 'addButtonWithTitle' renvoie un' NSInteger' qui est l'index du bouton que vous venez d'ajouter. Donc vous pouvez faire quelque chose comme 'myButtonIndex = [myActionSheet addButtonWithTitle: @" Some Title "];'; puis plus tard dans la méthode delegate, vous pouvez tester si 'index == myButtonIndex', etc. –