ビューコントローラーの読み込み& Cocoa Touchでxibを使用せずにプログラムで階層を表示する

StackOverflow https://stackoverflow.com/questions/809898

質問

すべてのCocoa Touchテンプレートがペン先をロードするように設定されているようです。

View Controllerを使用する新しいプロジェクトを開始し、nib / xibからではなく、そのビュー(階層)をプログラムで読み込む場合、テンプレートの設定または調整の手順はどのようになりますか。

-loadViewを実装するだけでしたが、これを実行しようとするたびに問題が発生します。

役に立ちましたか?

解決

完全にプログラムによるユーザーインターフェイスの生成は、かなり簡単です。まず、main.mを次のように編集する必要があります。

int main(int argc, char *argv[]) 
{
    NSAutoreleasePool *pool = [NSAutoreleasePool new];  
    UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
    [pool release];
    return 0;   
}

MyAppDelegateは、アプリケーションデリゲートクラスの名前です。これは、起動時にMyAppDelegateのインスタンスが作成されることを意味します。これは通常、アプリケーションのメインNibファイルによって処理されます。

MyAppDelegate内で、次のようなapplicationDidFinishLaunching:メソッドを実装します。

- (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は、ウィンドウのプライマリビューのビューコントローラーです。これにより、メインウィンドウが初期化され、MyRootViewControllerによって管理されるビューが追加されます。 rootControllerは、後で参照できるように、デリゲート内のインスタンス変数として保持されます。

これにより、MyRootViewControllerを介してプログラムでユーザーインターフェイスを生成できるようになります。

他のヒント

UIView自体には階層がありませんが、UINavigationControllerにはあります。そのため、それらの1つを初期化し、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];
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top