Travailler avec l'iPhone OS 3.2 uniquement des classes
-
03-10-2019 - |
Question
Comment voulez-vous écrire une application universelle qui utilise des classes introduites dans l'iPhone OS 3.2, tels que UIPopoverController
et UISplitViewController
? Sur le blog de Jeff LaMarche à ce sujet, Ole fournit une méthode pour instancier ces objets; vous instancier un UIPopoverController
comme ceci: [NSClassFromString(@"UIPopoverController") alloc]
.
Ceci est bien pour instancier ces classes dans le code, mais qu'en protocoles et leurs méthodes? Mon application iPad utilise une UISplitViewController
et a une classe qui doit se conformer à la UISplitViewControllerDelegate
et UIPopoverControllerDelegate
. Comment voulez-vous déclarer? Et comment voulez-vous travailler avec une méthode telle que la suivante?
- (void)splitViewController:(UISplitViewController *)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)pc
où l'appel de méthode exige UISplitViewController
à passer en?
La solution 2
Et, comme ça, je vois que ce n'est pas un problème si vous faible liaison le cadre UIKit. J'ai trouvé ce ici sur Stack Overflow .
Autres conseils
Vous pouvez le laisser là, puisque ceux-ci UISplitViewController*
etc ne sert que comme un type pour le compilateur de faire la vérification de type (contrairement [UISplitViewController alloc]
qui un besoin de symboles réels être liés).
Ajouter un @class UISplitViewController, UIPopoverController;
au début du fichier si elle ne compile pas.