0

.xib ファイルに appdelegate オブジェクトがあるアップルのフォトピッカーの例に従おうとしています。appdelegate オブジェクトはどのようにして xib ファイルに入り、なぜ重要なのですか?

私のアプリでは、フォトピッカーの例のようなナビゲーション コントローラーが必要です。私のテスト作業にはナビゲーション コントローラーが含まれていませんでした。インターフェイス ビルダーが追加を許可しないことを決定したように見えるため、ビュー コントローラーしかないため、テスト作業に挿入するのに苦労しています。ナビゲーション コントローラー アーキテクチャを備えた新しいアプリで最初からやり直してから、テスト作業のメソッドとクラスのコピーを追加するのが最も簡単でしょうか。それとも最初からやり直す必要はありませんか?appdelegate オブジェクトを xib に挿入すると、既存のテスト作業をより直接的に使用できるようになるのではないかと思います。

更新 0

私はあなたの答えの指示に従ったと思います。Xcodeが提案し_viewController、それを変更しました。私のアプリは iPad と iPhone の両方に対応しているため (現在は iPad のみで作業しています)、もう少し複雑だと思います。正常にコンパイルできますが、PhotoPicker の xib ファイルに appdelegate オブジェクトが含まれていても、xib ファイルに appdelegate オブジェクトが表示されません。

まだいくつかのオブジェクトを接続する必要があると思いますが、それについても助けが必要です。PhotoPicker では、Navigation Controller の Connections Inspector は、参照アウトレットが ~ の間navControllerAppDelegateあることを示し、AppDelegate の Connections Inspector は、参照アウトレットが ~ の間delegateにあることを示しFile's Ownerます。しかし、私の xib ファイルには (BS)AppDelegate オブジェクトがないため、それなしで接続する方法がわかりません。

@interface BSAppDelegate ()
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.viewController = [[BSViewController alloc] initWithNibName:@"BSViewController_iPhone" bundle:nil];
    } else {
        self.viewController = [[BSViewController alloc] initWithNibName:@"BSViewController_iPad" bundle:nil];
    }
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:_viewController];
    self.window.rootViewController = navigationController;

    [self.window makeKeyAndVisible];
    return YES;
}

更新 0

4

1 に答える 1