안녕하세요 동료 프로그래머viewDidLoad에서 프레임/경계를 결정하십시오.
먼저 긴 게시물을 유감스럽게 생각합니다. 내 질문은 다소 단순하지만, 내가하고있는 일을 알고 있는지 확인하고 싶습니다. 제 접근 방식의 기본 아이디어를 바꾸고 싶지는 않습니다.
이 (다음 모든 프로그램 수행, 더 스토리 보드, 아니 펜촉, 아니있는 navigationController)
는 나는 자신도없는 RootViewController이 없습니다. 그가하는 일은 다른 ViewController를 인스턴스화하고, 전환을 관리하고, 자신의 뷰를 메인 윈도우에 푸시 (추가)하는 것뿐입니다. 이러한 뷰를 올바르게 배치하기 위해 RootViewCOntrollers SubController 중 하나에 대한 경계/프레임을 가져 오려고합니다. 내가 AppDelegate에에서 RootViewController를 만드는 방법이 자신의 초기화 후
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor grayColor];
self.window.rootViewController = [[UCRootViewController alloc]init];
[self.window makeKeyAndVisible];
return YES;
}
(나는 빈 프로젝트로 시작)되면, rootviewController는 MapViewController는 내비게이션 바 및 MKMapView를 생성하는 MapViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"RootviewController initialized");
self.mapviewController = [[UCMapviewController alloc] initWithDelegate:self];
self.view = self.mapviewController.view;
[self.mapviewController.view setOpaque:YES];
[self.view bringSubviewToFront:self.mapviewController.view];
[self presentModalViewController:self.mapviewController animated:YES];
self.currentlyActiveController = self.mapviewController;
}
을 만듭니다. MapViewController의 viewDidLoad()
에서 경계선/프레임을 얻을 수 없기 때문에 지금 프레임을 하드 코드로 설정했습니다. 경계/프레임에 대한 정보를 얻으려고하면 반환되는 값이 0입니다.
- (void)viewDidLoad
{
NSLog(@"MapviewController initialized");
[super viewDidLoad];
self.isMapViewPushedAside = NO;
// Custom initizialation for navigationBar
[self setupNavigationBar];
// Custom initialization for mapview
[self setUpMapview];
[self trackUserLocation];
// Custom initialization for popupActionsButton
[self setUpPopupButtons];
// Custom tests
[self test];
[self focusLocationOnMap:self.locationManager.location.coordinate];
[self.locationManager stopUpdatingLocation];
}
프레임에 대해 프레임/경계 (동일한)를 반환하는 두 개의 대리자 메서드를 구현했습니다. 문제는 모든 것을 초기화 한 후에가 아니라 처음부터 그 값을 얻어야한다는 것입니다. 모든 것이 끝난 후 버튼에서 대리자 메서드를 호출하면 예상대로 작동합니다.
CGRect frame = [self.mapDelegate frameData];
NSLog(@"width by frame: %f", frame.size.width);
NSLog(@"height by frame: %f", frame.size.height);
CGRect bounds = [self.mapDelegate boundsData];
NSLog(@"width by bounds: %f", bounds.size.width);
NSLog(@"height by bounds: %f", bounds.size.height);
어떻게 프레임을 얻을 수 있습니까/시작의 경계, 즉, "설정"방법을 내 사용자를 호출하기 전에 ..?!
답장을 보내 주셔서 감사합니다. 그에 따라 코드를 변경했습니다! – MJB