Могу ли я полностью удалить файл xib? - PullRequest
2 голосов
/ 18 января 2012

Я конвертировал простую программу, которая использует XIB-файл для программной работы. Я удалил элементы один за другим и вставил их обратно в код.

Могу ли я в конечном итоге удалить весь файл? или это для чего-то жизненно важного?

Кажется, их три.

PhoneContent.xib MyView.xib MainWindow.xib

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Да, вы можете удалить все файлы .xib. Если вы удаляете MainWindow.xib, не забудьте инициализировать ваше окно в UIApplicationDelegate 's didFinishLaunchingWithOptions:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];

и затем установите контроллер корневого представления

self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

также, как упоминал Ник Локвуд, проверьте main.m, чтобы увидеть, установлен ли класс UIApplicationDelegate (по умолчанию это делается Xcode4.2 и выше)

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

Наконец, удалите свойство Main nib file base name из файла <App>-Info.plist.

3 голосов
/ 18 января 2012

Вам также необходимо удалить главное значение XIb из списка App_info.plist

3 голосов
/ 18 января 2012

Вам не нужны MyView.xib или PhoneContent.xib, поэтому вы можете просто удалить их, если вы воссоздали макеты в коде.

Чтобы удалить MainWindow.xib, вам необходимо обновитьapplication: didFinishLaunchingWithOptions метод для настройки окна и контроллера основного вида программно, но более тонко, чем вам нужно изменить основную функцию в 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[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([YourAppDelegate class]));
    [pool release];
    return retVal;
}

Вам также придется удалить ссылку на MainWindow (основное имя файла пера) из вашего файла info.plist.

Хорошо.Итак, теперь я рассказал вам, как удалить файлы пера, вы не возражаете, если я спрошу , почему вы это делаете?Создание макетов в коде - это безумие!Это все равно что пытаться сгенерировать HTML в JavaScript или сгенерировать картинку, указав цвета в виде шестнадцатеричных чисел в текстовом файле.

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

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

Что вы имеете против файлов пера?

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