我正在尝试以编程方式设置我的 Nib 属性。具体来说,我有一个用 Nib 初始化的 View Controller ,现在我尝试以编程方式 [mapView setMapType:MKMapTypeHybrid] 但它从未设置它。
我的mapView是一个IBOutlet MKMapView,我将一个Map View拖到我的 Nib 中并将mapView连接到Map View。
如果我在 map View 的属性检查器中设置类型,它就可以正常工作。有没有办法以编程方式执行此操作?
几个月前我就放弃了使用 nib 的尝试(就在我开始使用 XCode 后不久),但如果能弄清楚这一点那就太好了。 谢谢
MapTabViewController.h
#import <MapKit/MapKit.h>
@interface MapTabViewController : UIViewController <MKMapViewDelegate>
@property (nonatomic, strong) IBOutlet MKMapView *mapView;
MapTabViewController.m
-(id) initWithTabBarAndNibName: (NSString *) nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = MAPTAB_TITLE;
self.tabBarItem.image = [UIImage imageNamed:MAPTAB_ICON];
self.mapView = [[MKMapView alloc] init];
[self.mapView setMapType:MKMapTypeHybrid];
}
return self;
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.dataModel = [[DataModel alloc] init];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
tabBarController = [[UITabBarController alloc] init];
vc_tacTab = [[TacTabViewController alloc] initWithTabBarAndNibName:@"TacTabViewController" bundle: nil];
vc_tacTab.dataModel = self.dataModel;
vc_mapTab = [[MapTabViewController alloc] initWithTabBarAndNibName:@"MapTabViewController" bundle:nil];
vc_mapTab.dataModel = self.dataModel;
NSArray *localControllersArray = [[NSArray alloc] initWithObjects:vc_tacTab, vc_mapTab, nil];
tabBarController.viewControllers = localControllersArray;
[self.window addSubview:tabBarController.view];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
最佳答案
self.mapView = [[MKMapView alloc] init];
在这里,您正在销毁 socket 中的值,并将其替换为新的 map View ,而该 map View 将永远不会显示。
从 Nib 加载时,导出将填充您在 Nib 中链接到的对象。删除这条线,你应该没问题。
编辑 - 刚刚意识到此代码的执行位置。 socket 还不会被填充 - 您需要在 viewDidLoad 中设置属性,而不是在重写的初始化程序中 - 事实上,所有这些代码最好放在 viewDidLoad 中。
关于ios - 以编程方式更改 NIB 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302630/