앞서 언급했듯이 나는 1 차 주문의 Objective-C 초보자이지만 주제에 대해 4 권의 실제 도서를 읽었으며 전자 책 및 문서의 버킷로드를 읽었지만 여전히 원하는 것을 찾을 수 없습니다.다른 객체에서 응용 프로그램 위임자의 윈도우 접근 자 메서드에 어떻게 액세스합니까?
응용 프로그램 대리인의 window 속성의 실제 크기에서 view 속성을 구성하려는 최상위 수준의 콘텐츠보기 컨트롤러가 있습니다. 이것은 여러 사람들이 이미 질문을 한 내용입니다. ([UIScreen mainScreen]
는이 포럼에서 전에 여러 번 방영 된 이유 때문에 그것을 자르지 않습니다). 따라서 논리적 인 접근 방식은 콘텐츠 뷰 컨트롤러가 응용 프로그램 대리인의 창 프레임을 읽는 것입니다. 지금, 이것에 가까운 유일한 대답은 [[[UIApplication sharedApplication] window] frame]
을 사용하는 것입니다 - 그러나 이것은 일단 window 속성이 keyAndVisible이되면 작동합니다. 콘텐츠 뷰 컨트롤러는 전에 앱 위임자의 윈도우 속성 을 읽어야 makeKeyAndVisible을 가져옵니다. 내 콘텐츠 뷰 컨트롤러의 initWithNibName에서
- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {
// This next line is a test window frame for R&D purposes....
[self setWindow: [[UIWindow alloc] initWithFrame: CGRectMake(0.0f, 20.0f, 320.0f, 320.0f)]];
if ([self window]) {
contentViewController = [[ContentViewControl alloc] initWithNibName: nil bundle: nil]; // Content view controller instantiated here
if (contentViewController) {
[[self window] addSubview: [contentViewController view]];
[[self window] layoutSubviews];
[[self window] makeKeyAndVisible]; // Window made key and visible here
return YES;
}
}
return NO;
}
: 코드는 .... 순서로
앱 위임 간다 전무 번들 : 나는 다음과 같은 테스트 코드가 전무 방법 ...
- (id) initWithNibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil {
self = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil];
if (self) {
NSLog(@"%@", NSStringFromCGRect([[[UIApplication sharedApplication] keyWindow] frame]));
// This does not work.
}
return self;
}
App Delegate의 창이 아직 키가 보이지 않아서 작동하지 않습니다. 그래서 내 질문은 이렇습니다. 내 App Delegate Class 인스턴스의 이름은 무엇입니까? App Delegate의 클래스의 기본값은 myApplicationNameAppDelegate
이지만 기본값은 입니다. [[UIApplication sharedApplication] keyWindow]
에 대한 전화를 다음과 같이 바꾸고 싶습니다.
[myAppDelegatesInstanceName window].
조금 더 확장하면 쿼리하는 개체의 범위 하위 항목이 아닌 다른 대상 개체의 메서드에 액세스하는 방법은 무엇입니까?
내가 말했듯이, 나는 이것 모두에 대한 총괄 한 멍청이 다. 그리고 이것은 아마도 다른 벙어리 멍청한 질문 일 것이다. 그러나 그것은 아무도 간단한 방법으로 대답하지 않은 것으로 보인다.
(절차 적으로 - 내 집처럼 - 전체 프로그램 스위트에서 전역 적으로 액세스 할 수있는 창을 만드는 것부터 시작하여 특정 매개 변수로 전달하는 것까지 범위의 다른 수준으로 창을 가져 오는 많은 방법이 있습니다. 다양한 기능 계층 구조 - 그러나이 객관적인 것들은 확립 된 절차 적 관행에서 출발하는 것처럼 보입니다.
누구든지 도움을받을 수 있다면 정말 감사 할 것입니다. 이 물건은 확실히 직관적이지 않습니다! V.V.
는 빠른 응답을 당신에게 올레 감사합니다! 나는 그것을 시도 할 것이다. – VectorVictor
미안해 보이지만, 나는 아직도 기쁨을 얻지 못하고있다. 귀하의 답변을 올바르게 이해한다면 제 구조는 다음과 같아야합니다 : [[(NumicatorAppDelegate *) [[UIApplication sharedApplication] delegate] window] frame]. 이 올바른지? – VectorVictor
예. 오류가 있습니까? 또한 #import NumericAppDelegate.h를해야합니다. –