xCode - изменение вида между двумя существующими xib-файлами - PullRequest
0 голосов
/ 12 марта 2011

Я очень плохо знаком с xCode и Objective-C, поэтому я хотел сделать простой текст RPG.

В настоящее время я делаю процесс создания персонажа, состоящий из 4 xib-файлов. Единственный способ заставить меня переключать представления на работу - это посмотреть на утилиту-шаблон. Проблема в том, что теперь у меня есть первый экран, являющийся делегатом для второго экрана, являющийся делегатом для третьего экрана и т. Д. Таким образом, к концу процесса создания персонажа я не могу отклонить представления, потому что это просто «отступает» через Виды.

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

Все, что мне нужно, это простой способ переключения с одной загруженной XIB на другую. Я неправильно понял addSubview или мне нужно что-то совершенно другое?

(Если это поможет: я работал с VB в течение нескольких лет, если вы заметили, что я пропустил какую-то концепцию, касающуюся представлений и тому подобное) Заранее спасибо! :)

Ответы [ 4 ]

4 голосов
/ 25 февраля 2012

Используйте этот код.Это действительно просто и хорошо работает.

  View *view = [[View alloc] initWithNibName:@"xibNameGoesHere" bundle:nil];
view.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:view animated:YES completion:nil];

Это переключится на другой файл XIB, и два представления не будут принадлежать друг другу.Я использую его в своей собственной игре прямо сейчас.

2 голосов
/ 14 марта 2011

@ Йоаким Хорошо, я так и делаю. У меня есть класс с именем RootViewController: UIViewContoller, вид которого я добавляю прямо в окно. Затем я делаю подкласс UIView, т.е. MyView. Все мои взгляды тогда подкласс MyView. Я также делаю перечисление для всех моих взглядов. В RootViewController у вас должен быть метод view view: (int), который выглядит примерно так:

    -(void) switchView:(myView) view
    {
        [_currentView removeFromSuperview];

        switch(view)
        {
            case titleView:
            _currentView = [[TitleView alloc] initWithRoot:self];
            break;
            case homeView:
            _currentView = [[HomeView alloc] initWithRoot:self];
            break;
            default: break;
        }
        [self.view addSubview:_currentView];
        [_currentView release];
    }

в @interface RootViewContoller define MyView * _currentView; TitleView и HomeView являются подклассом MyView и имеют общий метод - (id) initWithRoot: (RootViewController *) rvc.

Для переключения между представлениями используйте [_rvc switchView: homeView]; Надеюсь, это поможет:)

0 голосов
/ 12 марта 2011

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

0 голосов
/ 12 марта 2011

Это называется UINavigationController. Идея

1) Вы помещаете соответствующий «следующий» контроллер в контроллер навигации каждый раз, когда пользователь отправляет текущий экран. Бонус - вы получите кнопку «назад» бесплатно на каждом этапе создания персонажа.

2) После создания персонажа вы извлекаете все контроллеры создания персонажа из стека.

Пожалуйста, прочитайте Руководство по программированию контроллера View для iOS , прежде чем пытаться «переключать представления» и тому подобное. Вы сэкономите массу времени и нервов.

...