Sto mantenendo un vecchio progetto iOS basato su SDK 6.0.Come utilizzare UIAlertController per sostituire UIActionSheet?
un metodo su questo progetto chiamato
-(void) showComboBox:(UIView*)view:withOptions:(NSDictionary*)options
viene utilizzato per mostrare una casella combinata. Per raggiungere l'obiettivo, ha utilizzato UIActionSheet, che è deprecato su iOS8.
La mia soluzione è come questo:
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];
}
È che una soluzione adeguata?
Questo è quello che la maggior parte preoccupazione per: UIAlertController deve essere aggiunto ad un UIViewController ma posso solo ottenere il puntatore del UIView, così ho usato view.nextResponder per ottenere ciò che voglio, ma è che un buon modo?
quasi la stessa, tranne che per una piccola differenza: non riesco a ottenere il puntatore del UIViewController direttamente quindi devo UIView.nextResponder utente invece, e voglio sapere se è giusto. –
Che cos'è 'view' nel codice? È una sottoview di qualsiasi controller di visualizzazione? – Kampai
In realtà viene utilizzato da WebView per visualizzare una casella combinata, ad esempio PhoneGap. –