ios - 以编程方式更改 NIB 复选框

标签 ios xcode

我正在尝试以编程方式设置我的 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/

相关文章:

ios - 如何以编程方式插入右键图像 UINavigationbar swift 3

objective-c - 用于配置的 XCode 预处理器宏?

ios - 如何集成 Hero 框架?

ios - 在我的 View Controller 中,我添加了一个具有 xib 的 subview ,我在 xib 中设置了自动布局,但是当我将 View 添加到 View Controller 时它不起作用

IOS unregisterForRemoteNotifications 在飞行模式下不起作用

ios - CKQueryNotification原因为什么是RecordUpdated但recordFields是nil?

ios - 更改导航栏后退按钮的厚度

ios - 添加新的自定义 View Controller 后应用程序无法运行

ios - 如何为 sprite kit 节点组合图像

javascript - iOS:使用本地 javascript 文件打开 UIWebView