2011-11-28 11 views
0

プログラムでnibプロパティを設定しようとしています。具体的には、私はペンで初期化されたビューコントローラを持っていますが、今はプログラムで[mapView setMapType:MKMapTypeHybrid]しようとしていますが、決して設定しません。プログラムでNIBチェックボックスを変更する

私のmapViewはIBOutlet MKMapViewで、マップビューを自分のペン先にドラッグし、マップビューをマップビューにドラッグしました。

[マップビュー]の[属性インスペクタ]で[タイプ]を設定すると、正常に動作します。プログラムでこれを行う方法はありますか?

私は数ヶ月前に(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; 

}

+0

いくつかのコードを投稿しますか? – onnoweb

答えて

1
self.mapView = [[MKMapView alloc] init]; 

ここでは、お使いのコンセントの値を破壊し、表示されません新しいのMapView、とそれを交換します。

ペン先からロードするときに、ペン先にペン先をリンクしたオブジェクトがアウトレットに読み込まれます。この行を削除しても問題ありません。

EDIT - このコードがどこで実行されているか分かります。アウトレットにはまだ値が設定されません。オーバーライドされたイニシャライザではなく、viewDidLoadでプロパティを設定する必要があります。実際、そのコードはすべてviewDidLoadに配置する方がよいでしょう。

+0

jrturtonありがとうございます。それは私が知らなかったことであり、私に研究の出発点を与えてくれます。その行を削除してもマップがハイブリッドモードで表示されるわけではありませんが、欠落していたキー情報です。 – Filo

+0

私は自分の答えを修正しました。試しているところではうまくいきません。 – jrturton

+0

甘い!どうもありがとう。完璧に動作します。 – Filo

関連する問題