Comment puis-je configurer un contrôleur de vue en tant que délégué pour deux choses (comme le LocationManager et l'Accéléromètre)?

StackOverflow https://stackoverflow.com/questions/1106852

Question

Je suis désolé si mon titre de question semble fondamentalement mal informés. Permettez-moi de vous expliquer ce que je suis en train de le faire.

J'ai défini la sous-classe UIViewController suivante, qui lance LocationManager, et dispose d'un bouton Démarrer l'enregistrement pour enregistrer une piste GPS.

Maintenant, je voudrais aussi tirer l'accéléromètre et permettre à l'utilisateur d'enregistrer aussi.

Ma sous-classe ViewController est le délégué LocationManager, que dois-je utiliser pour le délégué Accéléromètre? Puis-je utiliser le même point de vue, ou dois-je besoin de définir un sous-vue?

Voici l'interface pour ma sous-classe UIViewController:

@interface RootViewController : UIViewController <CLLocationManagerDelegate> {
    NSMutableArray *eventsArray;
    NSManagedObjectContext *managedObjectContext;
    CLLocationManager *locationManager;
    BOOL recording;
    UILabel *pointLabel;
    UIButton *startStop;
}

-(void)toggleButton;

Je peux poster plus du code si nécessaire, mais je pense que cela est applicable. Merci pour votre aide, je suis juste dans le développement de l'iPhone, et mon savoir-faire, si je en ai, se trouve dans les langages de programmation pointeur-moins:)

Était-ce utile?

La solution

Il est tout à fait raisonnable d'avoir un objet contrôleur soit le délégué pour plus d'une chose. Le seul botteur serait si à la fois votre LocationManager et votre Accéléromètre arrive d'avoir des méthodes de délégués qui se chevauchent, à savoir si les deux d'entre eux ont besoin de leurs délégués pour répondre à une méthode avec la même signature.

Au-delà de cela, vous simplement configurer votre contrôleur pour être délégué à la fois, de la même façon que vous définissez pour être délégué à un:

@interface Controller : UIViewController
    <CLLocationManagerDelegate, AccelerometerDelegate>
{
    ...
}

Et, plus tard:

[myLocationManager setDelegate:myController];
[myAccelerometer setDelegate:myController];

S'il vous plaît excuser la désignation. Je ne sais pas du haut de ma tête ce que les noms sont pour les classes et Accéléromètre LocationManager que vous avez besoin. Je viens d'utiliser ce que des noms descriptifs sont venus à l'esprit:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top