我只想说我仍然是一个 Objective-C/iOS 菜鸟,我学它的时间不长,所以请原谅我的无知:)
我的应用程序的内容会根据用户的位置而变化。我希望在"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
有没有比我的幻想位置视图控制器方法更好的方法来做到这一点?
如果这是获得我想要的东西的合理方式,有没有比 locationManager 更好的地方可以放置 performSegueWithIdentifier?放置它似乎是一个不好的地方(并且不确定它是否会在应用程序中进一步引起问题?),但是将它移动到 LocationViewController 或 didFinishLaunchingWithOptions: 会阻止它工作。
任何为我指明正确方向的帮助将不胜感激。谢谢 :)