모든 코코아 터치 템플릿이 펜촉을로드하도록 설정되어있는 것처럼 보입니다.xbox없이 코코아 터치에서 프로그래밍 방식으로 뷰 컨트롤러 및 뷰 계층로드하기
뷰 컨트롤러를 사용하려는 새 프로젝트를 시작하고 nib/xib가 아닌 프로그래밍 방식으로 뷰 (계층)를로드하려는 경우이를 설정하거나 템플릿을 조정하는 단계는 무엇입니까?
로드 뷰 (LoadView)를 구현해야했지만이 작업을 시도 할 때마다 문제가 발생했습니다.
모든 코코아 터치 템플릿이 펜촉을로드하도록 설정되어있는 것처럼 보입니다.xbox없이 코코아 터치에서 프로그래밍 방식으로 뷰 컨트롤러 및 뷰 계층로드하기
뷰 컨트롤러를 사용하려는 새 프로젝트를 시작하고 nib/xib가 아닌 프로그래밍 방식으로 뷰 (계층)를로드하려는 경우이를 설정하거나 템플릿을 조정하는 단계는 무엇입니까?
로드 뷰 (LoadView)를 구현해야했지만이 작업을 시도 할 때마다 문제가 발생했습니다.
완전한 프로그래밍 방식의 사용자 인터페이스 생성을 수행하는 것이 비교적 간단합니다. 첫째, 당신은 다음과 같은 것을보고 main.m을 편집해야합니다
MyAppDelegate 응용 프로그램 위임 클래스의 이름입니다int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
[pool release];
return 0;
}
. 즉, MyAppDelegate의 인스턴스가 시작시 만들어지며, 이는 애플리케이션의 주 Nib 파일에서 일반적으로 처리합니다.
MyAppDelegate 내에서, 당신의 아래 applicationDidFinishLaunching을 구현 : 다음과 같은 방법 : MyRootViewController는 창문의 기본 뷰에 대한 뷰 컨트롤러
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if (!window)
{
[self release];
return;
}
window.backgroundColor = [UIColor whiteColor];
rootController = [[MyRootViewController alloc] init];
[window addSubview:rootController.view];
[window makeKeyAndVisible];
[window layoutSubviews];
}
. 메인 윈도우를 초기화하고 MyRootViewController가 관리하는 뷰를 추가해야합니다. rootController는 나중에 참조 할 수 있도록 대리자 내에 인스턴스 변수로 보관됩니다.
이렇게하면 프로그래밍 방식으로 MyRootViewController를 통해 사용자 인터페이스를 생성 할 수 있습니다.
@Brad Larson, 안녕하세요, 고맙습니다. –
UIView 자체에 계층 구조가 없으므로 UINavigationController가 수행합니다. 그래서 그들 중 하나를 초기화하고 UIViewController를 스택에 띄웁니다. 가능한 가장 기본적인 방법으로 XIB 파일을 사용하지 말아야합니다. 당신은 이것을 기반으로 할 수 있어야합니다.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
UINavigationController *navController = [[UINavigationController alloc] init];
UIViewController *viewController = [[UIViewController alloc] init];
// set the properties of viewController here, to make it look like you want
[navController pushViewController:viewController animated:NO];
[window addSubview:navController.view];
// Don't forget memory management
[navController release];
[viewController release];
[window makeKeyAndVisible];
}
실제로, UIViews는 탐색과 관련하여 생각하고있는 것과 동일한 유형의 계층 구조가 아닌 화면의 레이아웃에 대한 계층 구조를 유지 관리합니다. –
사실입니다. 나는 그것이 그가 묻고있는 것이 아니라고 생각했지만, 당신은 절대적으로 옳습니다. – mmc
네,로드 뷰에서 뷰와 하위 뷰를 초기화하고 추가하여 수행하려는 작업을 수행 할 수 있어야합니다. 코드를 게시하는 데주의해야합니까? –
펜촉을 지우고 plist Main nib을 nil로 설정할 수 있습니까? 이 작업을 수행 할 때 AppDelegate가 기본 창을로드하고 컨트롤러 펜촉을 볼 수 있도록 설정되어있는 Prefab이 작동하므로 문제가 발생합니다. –