2011-11-28 4 views
0

프로그래밍 방식으로 nib 속성을 설정하려고합니다. 특히, 펜촉으로 초기화 된보기 컨트롤러가 있고 이제는 프로그래밍 방식으로 [mapView setMapType : MKMapTypeHybrid]를 시도하지만이를 설정하지 않습니다.프로그래밍 방식으로 NIB 확인란 변경

내 mapView는 IBOutlet MKMapView이며지도보기를 내 펜으로 드래그하고 mapView를지도보기로 연결했습니다.

지도보기의 속성 검사기에서 유형을 설정하면 올바르게 작동합니다. 프로그래밍 방식으로이 작업을 수행 할 수있는 방법이 있습니까?

몇 달 전 nibs를 사용하기를 포기했지만 (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]; 

여기 콘센트의 값을 파괴하고, 표시되지 않습니다 새로운지도보기, 그것을 대체하고있다.

펜촉에서로드 할 때 배출구에는 펜촉으로 연결 한 객체가 배출됩니다. 이 줄을 빼면 괜찮을거야.

편집 -이 코드가 실행되는 곳을 알았습니다. 콘센트가 아직 채워지지 않습니다. 재정의 된 이니셜 라이저가 아니라 viewDidLoad에서 속성을 설정해야합니다. 실제로 모든 코드가 viewDidLoad에 배치하는 것이 좋습니다.

+0

감사합니다 jrturton. 그것은 내가 모르는 것이고 나에게 연구의 출발점을 제공한다. 그 라인을 삭제해도 하이브리드 모드에서는 맵이 나타나지 않았지만 내가 누락 한 중요한 정보입니다. – Filo

+0

나는 내 대답을 수정했고, 시도한 곳에서 작동하지 않습니다. – jrturton

+0

달콤한! 감사합니다. 완벽하게 작동합니다. – Filo

관련 문제