ちょうど私がまだのObjective-C/iOS搭載のnoobだと言う私をみましょう、私は長いこと、そうメインビューコントローラが読み込まれる前に場所を読み込む方法は?
ユーザの位置に基づいて、私のアプリの内容が変化する自分の無知を:)言い訳してください、それを学習していません。コンテンツを読み込む前に、"ThisApp" would like to use your current location
ダイアログが表示され、コンテンツを再読み込みする必要がなくなります。
起動画像ページ(Default.pngが表示されているページ)に表示されている場所のポップアップが表示されているアプリがあるようです。私はグーグルで多くのことをしましたが、何も見つけられませんでした(おそらく私は正しい用語を知らなかったので)。
私が実装した方法は、まず自分のアプリケーションを自分のLocationViewControllerに移動させることでした。これにはデフォルトコードと変更が含まれていました。ストーリーボードにはDefault.pngの画像ビューがあります。ロケーションコントローラー(LocationViewControllerSegue)からメインビューコントローラーに移動します。
マイAppDelegate.hはそうのようになります。
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate> {
CLLocationManager *locationManager;
}
@property (strong, nonatomic) UIWindow *window;
@end
そして、私のAppDelegate.m:
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (locationManager == nil)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = 16000;
[locationManager startUpdatingLocation];
return YES;
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
[self.window.rootViewController performSegueWithIdentifier:@"LocationViewControllerSegue" sender:self.window.rootViewController];
}
... snip a bunch of default generated code ...
@end
はこれを行うには良い方法は、私の幻想的な場所・ビュー・コントローラよりも、あります方法?
これは、私が欲しいものを得るための合理的な方法であれば、どこかでperformSegueWithIdentifierをlocationManagerよりも置くことができますか?それはそれを置くには悪い場所のように思えますが、アプリで問題がさらに発生するかどうかはわかりませんが、LocationViewControllerまたはdidFinishLaunchingWithOptionsに移動すると動作しなくなります。
私に正しい方向を指示する助けがあれば幸いです。ありがとう:)
didUpdateToLocationは、名前が示唆するように、何回か呼び出されるだけで、現在の位置の座標を取得する必要があります。他のメソッドinitを呼び出すべきではありません。 – Charan