在Interface Builder中使用Map视图设置导航控制器

时间:2010-01-26 14:52:08

标签: iphone objective-c cocoa-touch interface-builder uinavigationcontroller

我正在尝试创建一个模式视图,当用户按下按钮时会弹出该视图。模态视图有一个导航栏,地图视图作为主视图。我在Interface Builder中设置它时遇到了麻烦。当我将文件所有者视图的视图出口设置为导航控制器内的视图时,唯一显示的是地图视图,顶部和底部有灰色空间。导航栏永远不会出现。这是一个看起来如何的网上商店,带有我IB窗口的图像。

如何让导航栏正确显示?感谢

alt text http://img.skitch.com/20100126-d5u4yuufpe77xdkuw2k1h9uahf.jpg

http://img.skitch.com/20100126-xrw6qd5jajytkq5u7x3kdk168s.jpg http://img.skitch.com/20100126-xrw6qd5jajytkq5u7x3kdk168s.jpg

以防万一,这是MapViewController声明:

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface MapViewController : UIViewController
{}
@end

推送模态视图控制器的代码:

MapViewController *mapVC = [[MapViewController alloc] init];
self.mapViewController = mapVC;
[mapVC release];
[self presentModalViewController:mapViewController animated:YES];

1 个答案:

答案 0 :(得分:3)


您在NIB文件中以错误的方式进行此操作。

将MKMapView添加到UIViewController的视图中。如果您不希望此视图转到其他任何位置,则可以在此处添加导航栏而不是控制器。

然而,拥有导航控制器非常方便。因此,请确保您的MapViewController类的NIB文件中没有导航控制器,然后编辑您的代码,如下所示:


MapViewController *mapVC = [[MapViewController alloc] init];
self.mapViewController = mapVC;
[mapVC release];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mapViewController];
[self presentModalViewController:navController animated:YES];
[navController release];

然后,您可以使用以下命令从MapViewController.m文件中访问此控制器:

self.navigationController