Создание нового ViewController и xib для программного отображения - PullRequest
0 голосов
/ 21 августа 2010

Я пишу библиотеку, которая будет использоваться разработчиками для iPhone (аналогично тому, как реализован OpenFeint), и я пытаюсь создать ViewController со связанным XIB, чтобы я мог создать его экземпляр в своем коде с помощью

SplashScreenViewController *splashScreenViewController = [[SplashScreenViewController alloc] init];
UIWindow *topApplicationWindow = [self getTopWindow];
[topApplicationWindow addSubview:splashScreenViewController.view];

Однако, хотя это работает с простыми элементами управления (кнопки UIB и т. Д.), С моим SplashScreenViewController ничего не отображается. SplashScreenViewController очень прост:

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>


@interface SplashScreenView : UIViewController {
}

@end

и реализация пуста. В моем View XIB (SplashScreenView.xib) я попытался установить класс Владельца файла на SplashScreenViewController, который не работал, затем я попытался сделать то же, что и в OpenFeint, то есть добавить View Controller в IB и сделайте основной UIView дочерним по отношению к нему и сделайте его вместо класса SplashScreenViewController. Это также не работает (не отображается).

Мне интересно, есть ли у кого-нибудь хорошая идея о том, чего мне не хватает, или кто-то может порекомендовать пошаговое руководство по созданию новых ViewControllers так, как я пытаюсь.

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 августа 2010

Попробуйте 2 вещи:

  1. Вызов initWithNibName , а не только init. Возможно, OpenFeint, о котором вы говорили, переопределял init для вызова initWithNibName, поэтому вы его не видите.

  2. Установите SplashScreenViewController в качестве владельца вашего файла и подключите его выход к вашему просмотр в IB.

Надеюсь, это поможет.

0 голосов
/ 21 августа 2010

Вместо [splashScreenViewController alloc], попробуйте [SplashScreenViewController alloc].Я удивлен, что вы не получили предупреждение компилятора.

...