【问题标题】:Tab bar and Mapview issues标签栏和地图视图问题
【发布时间】:2014-11-05 21:39:04
【问题描述】:

我真的对这个问题感到困惑。我最近在我的应用程序中遇到了我的 mapview 选项卡的问题。甚至到了重新开始的地步。我只是想知道我是唯一一个遇到这个问题的人,还是我在这里做错了什么。

我对 iOS 还很陌生,但我知道如何定义地图视图的中心和跨度,以便以用户位置为中心。

我已经在它自己的视图中构建了它,它似乎可以工作,但是当我将它放在选项卡控制器中时......我有一个问题。地图在显示用户位置时保持缩小。它应该显示放大的用户位置。

我的地图视图控制器:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.mapView.delegate self];
    [self.mapView setShowsUserLocation:YES];
    // Do any additional setup after loading the view from its nib.
}

-(void)mapView:(MKMapView *)mapView
didUpdateUserLocation:(MKUserLocation *)userLocation
{
    CLLocationCoordinate2D loc = [userLocation coordinate];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 500, 500);
    [self.mapView setRegion:region animated:YES];
}

我还认为这可能与我在委托中创建选项卡控制器的方式有关。

我的应用委托:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[NWSWelcomeViewController alloc] initWithNibName:@"NWSWelcomeViewController" bundle:nil];
    UIViewController *viewController2 = [[NWSMapViewViewController alloc] initWithNibName:@"NWSMapViewViewController" bundle:nil];
  //  UIViewController *viewController3 = [[NWSSettingsViewController alloc] initWithNibName:@"NWSSettingsViewController" bundle:nil];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[viewController1, viewController2, /* viewController3 */];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

我正在为 iOS 5.1 编写,我正在使用最新的 Xcode。

是的,我在 mapView 上启用了缩放设置。

我只想获取用户位置以将地图视图放大到用户的位置。

【问题讨论】:

  • 我正在考虑更多,我想知道在按下选项卡时是否需要添加一些东西?因为我注意到当我切换到带有地图的选项卡时视图会闪烁。好像它在自我重置一样。

标签: ios uitabbarcontroller mkmapview


【解决方案1】:

viewDidLoad中的这一行:

[self.mapView.delegate self];

什么都不做(它试图将消息self 发送到self.mapView.delegate)。

它实际上并没有设置地图视图的delegate,因此永远不会调用didUpdateUserLocation

你的意思可能是:

[self.mapView setDelegate:self];

或者这个:

self.mapView.delegate = self;

【讨论】:

  • 是的......这就是答案。谢谢!
【解决方案2】:

这类问题也可以通过storyboard来解决。 转到情节提要->控制器-> mapView 右键单击 mapView 弹出窗口将显示有一个点委托将委托 + 点拖动到控制器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多