Используйте UIViewController для загрузки файла пера - PullRequest
0 голосов
/ 24 ноября 2011

Я запустил проект в Xcode 3.x, используя опцию «Создать приложение на основе окна».Кажется, что проект загружает основной файл пера сам по себе из записи info.plist: «Основное имя основного файла пера».

Теперь я хочу загрузить основной файл пера с помощью UIViewController.Могу ли я просто удалить запись info.plist и программно загрузить файл nib в «application: didFinishLaunchingWithOptions:», используя контроллер представления?

(Теперь проект был перемещен в Xcode 4.2. Но я предполагаю версию компиляторане должно иметь большого значения для этого случая ...)

Надеюсь, что кто-то, знающий в этой области, может помочь ...

1 Ответ

1 голос
/ 24 ноября 2011

Если вы обновляете тот же проект, то нет, вы не можете просто сделать это.

Механизм, который Apple использует в своих шаблонах для входа в приложение, изменился между этими версиями.

В 3.x Main Interface установлен на MainWindow.xib в настройках вашего проекта. В этом xib ваш делегат приложения загружен как объект.

В 4.x main.m специально загружает делегата приложения с этой строкой:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

это последний аргумент, который изменился между 3.x и 4.x

Лучше всего создать новый проект и посмотреть, как в коде шаблона все это связано.

UPDATE

Прежде всего, если ваш проект работает, вам действительно нужно его изменить?

Если так, то я использую код шаблона из свежего проекта

Перейдите к main.m и измените реализацию с

int main(int argc, char *argv[]) 
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

до

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

NB Измените AppDelegate на имя класса вашего делегата приложения.

Вам также потребуется обновить делегат приложения, чтобы создать UIWindow программно.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    // Instantiate your rootViewController

    self.window.rootViewController = yourRootViewController;
    [self.window makeKeyAndVisible];
    return YES;
}

Это самые очевидные различия, которые я могу себе представить, могут быть некоторые другие субтитры, но я не использовал 3.x так долго, что не могу вспомнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...