Ich unterhalte ein altes iOS-Projekt, das auf SDK 6.0 basiert.Wie UIAlertController verwenden, um UIActionSheet zu ersetzen?
Verfahren an diesem Projekt namens
-(void) showComboBox:(UIView*)view:withOptions:(NSDictionary*)options
verwendet wird, ein Kombinationsfeld zu zeigen. Um das Ziel zu erreichen, verwendete es UIActionSheet, das auf iOS8 veraltet ist.
ist meine Lösung dieses wie:
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber10_8) {
UIAlertController* alertController = [UIAlertController
alertControllerWithTitle:@"title"
message:@"message"
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction* item = [UIAlertAction actionWithTitle:@"item"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
//do something here
//inform the selection to the WebView
...
[alertController dismissViewControllerAnimated:YES completion:nil];
}];
UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[alertController dismissViewControllerAnimated:YES completion:nil];
}];
[alertController addAction:item];
[alertController addAction:cancelAction];
//I am not sure whether it's the right way
if ([view.nextResponder isKindOfClass:UIViewController.class]) {
UIViewController* vc = (UIViewController*)view.nextResponder;
[vc presentViewController:alertController animated:YES completion:nil];
}
Ist das eine richtige Lösung?
Dies ist, was ich meist Besorgnis über: UIAlertController zu einem UIViewController hinzugefügt werden muss, aber ich kann den Zeiger des UIView nur bekommen, so habe ich view.nextResponder zu bekommen, was ich will, aber es ist, dass eine gute Weg?
Fast die gleiche, mit Ausnahme von einem kleinen Unterschied: Ich kann nicht den Zeiger von UIViewController erhalten direkt, so habe ich auf Benutzer UIView.nextResponder statt, und ich will wissen, ob es richtig ist. –
Was ist 'view' in Ihrem Code? Ist es eine Unteransicht eines View-Controllers? – Kampai
Tatsächlich wird es von WebView verwendet, um ein Kombinationsfeld wie Phonegap zu öffnen. –