どのように私は(そのようLocationManagerや加速度計など)二つのもののためのデリゲートとしてビューコントローラを設定するのですか?
-
12-09-2019 - |
質問
私の質問のタイトルは、基本的に無知と思われる場合はごめんなさい。私がやろうとしていますかを説明しましょう。
私はLocationManagerを発射し、GPSトラックを保存する録画開始ボタンがあり、次のUIViewControllerのサブクラスを定義しています。
今、私はまた、加速度計を起動し、ユーザーが同様のことを記録することができるようにしたいと思います。
私のViewControllerサブクラスはLocationManagerデリゲートであるので、私は加速度デリゲートのために何を使うべきでしょうか?私は、同じビューを使用することができ、または私はサブビューを定義する必要があるのですか?
ここに私のUIViewControllerサブクラス用のインタフェースは次のとおりです。
@interface RootViewController : UIViewController <CLLocationManagerDelegate> {
NSMutableArray *eventsArray;
NSManagedObjectContext *managedObjectContext;
CLLocationManager *locationManager;
BOOL recording;
UILabel *pointLabel;
UIButton *startStop;
}
-(void)toggleButton;
私は、必要に応じてより多くのコードを投稿することができますが、私は、これが適用されるすべてだと思います。あなたの助けのおかげで、私はiPhoneの開発に入ると、私の専門知識よ、私はいずれかを持っている場合は、ポインタレスのプログラミング言語である:)
解決
1つのコントローラオブジェクトが複数のもののためのデリゲートも持っていることは完全に合理的です。それらの両方が同じシグネチャを持つメソッドに対応するために彼らの代表者が必要な場合は、あなたとあなたのLocationManager加速度計の両方が重なってデリゲートメソッド、すなわちを持って起こる場合にのみキッカーは次のようになります。
それ以上に、あなたは単に両方のための代理人、あなたがいずれかの代理人であることをそれを設定するのと同じ方法であるためにあなたのコントローラを設定します
@interface Controller : UIViewController
<CLLocationManagerDelegate, AccelerometerDelegate>
{
...
}
そして、後でます:
[myLocationManager setDelegate:myController];
[myAccelerometer setDelegate:myController];
ネーミングを許しなさい。私は名前が必要な加速度センサーとLocationManagerクラスのためにあるものを私の頭の上をオフに知りません。私は説明的な名前が頭に浮かんだものは何でも使用:)