Как я могу переключить взгляды в touch какао? - PullRequest
0 голосов
/ 24 декабря 2011

У меня есть два контроллера представления с именем "view1ViewController" и "view2ViewController" в проекте касания какао, и они оба связаны с UIView в раскадровке. Скажем, я положил кнопку в view1. Codewise, какой самый простой способ переключиться на view2 после того, как я нажму эту кнопку? Какой код мне нужно набрать, чтобы заставить это работать?

- Обновление -

Несмотря на то, что вы все сказали мне об этом, я все еще не могу заставить это работать. Может я чего то не получаю? Нужно ли добавить что-то еще? Вот код для view1ViewController.m :

#import "view1ViewController.h"
#import "view2ViewController.h"


@interface view1ViewController ()

@property (nonatomic, strong) view2ViewController *controller;

@end

@implementation view1ViewController
@synthesize controller = _controller;

- (view2ViewController *)controller
{
    if (!_controller) {
        _controller = [[view2ViewController alloc] init];
    }
    return _controller;
}

- (IBAction)buttonPressed {
    [self.navigationController pushViewController:self.controller animated:YES];
}
@end

Я не трогал другие файлы и убедился, что для класса добавленного представления в раскадровке установлено значение view2ViewController.

Ответы [ 2 ]

2 голосов
/ 24 декабря 2011

Просто

[self.navigationController pushViewController:view2ViewController animated:YES];

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

Я предположил, что ваше приложение основано на навигации.Если это не так, вам нужно инициировать UINavigationController.Например, в вашем делегате приложения, в вашем методе didFinishLaunchingWithOptions: вы можете сделать что-то вроде

navigationController = [[UINavigationController alloc] init];
[self.window addSubview:navigationController.view];
[navigationController pushViewController:self.viewController animated:NO];

[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];

, где navigationController - это UINavigationController, установленное как @property.

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

[self presentModalViewController:view2ViewController animated:YES];
1 голос
/ 24 декабря 2011

Если вы не настроили контроллер навигации, этот подход не будет работать.Чтобы настроить контроллер навигации, необходимо убедиться, что текущее представление является корневым контроллером представления для контроллера навигации.Это может быть сделано программно, но если вы используете раскадровку, было бы намного проще встроить представление в контроллер навигации.Как только контроллер установлен, нажатие должно сработать.

Для встраивания раскадровки перейдите в верхнее меню и выберите Правка-> Внедрить в контроллер навигации.

Для выполнения этого через код, где бы вы ни создавали это представление, вместо этого запишите его как

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:view1ViewController];

Затем добавьте контроллер навигации, куда бы вы ни добавили view1ViewController.

...