2012-03-04 7 views
0

Я пробовал каждое решение в Google и ничего не работает. До сих пор я реализовал UINavigationController с делегатом приложения, теперь все, что я хочу выполнить, меняется на WebViewController, щелкнув UIButton, который я создал в построителе интерфейса, но кнопка, похоже, ничего не делает, когда Я запускаю приложение. Имейте в виду, что я хочу это push к моему WebViewController вид.Перемещение от одного взгляда к другому через UIButton (UINavigationController)

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
    [self.window addSubview:navigationController.view]; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

ViewController.m

- (IBAction)createFile:(id)sender { 
    WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:NSBundle.mainBundle]; 
    [self.navigationController pushViewController:webViewController animated:YES]; 
} 

Примечание: В интерфейсе строитель я уже подключен CreateFile к кнопке.

Я понимаю, что это обычно что-то, что называется супер легким, но по какой-то причине я так и не получил его на работу. Заранее спасибо.

EDIT: Я добавил удерживающее имущество, синтезированный его и добавил к моему коду в файле ViewController.m:

WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:NSBundle.mainBundle]; 
self.navigationController = [[UINavigationController alloc] initWithRootViewController:webViewController]; 
[self.navigationController pushViewController:webViewController animated:YES]; 

Но теперь приложение падает на кнопку мыши и возвращается с SIGABRT: «Раздвигая тот же экземпляр вид контроллера больше, чем когда-то не поддерживается (WebViewController: 0x1ed70e80)»

+0

Теперь вы проталкиваете один и тот же вид в одном навигационном стеке дважды. ваш метод init использует webViewController как rootViewController, а затем вы пытаетесь снова нажать тот же webViewController. – richerd

+0

также при назначении контроллера корневого представления вы должны использовать self.window.rootViewController = navigationController вместо [self.window addSubView: navigationController.view] – richerd

+0

Хорошо, я заменил [self.window addSubView: navigationController.view] на «self». window.rootViewController = navigationController ", и я достал initWithNibName: @" WebViewController ": NSBundle.mainBundle], но я все равно получаю ту же ошибку. –

ответ

0

давайте это попробуем

-(IBAction)createFile:(id)sender{ 
    WebViewController *webViewController = [[WebViewController alloc] 
    initWithNibName:@"WebViewController" bundle:nil]; 
    webViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:webViewController animated:YES]; 
} 
+0

Great :) получил это, чтобы работать, но он также избавляется от UINavigationController (верхний бар исчезает), который я хотел сохранить. Я также искал изменение вида в стиле push, но я предполагаю, что вы можете легко изменить это с помощью _UIModalTransitionStylePush_ –

+0

, а затем взгляните на это, это должно помочь устранить это. https://developer.apple.com/ библиотека/ИОС/# samplecode/SimpleDrillDown/Введение/Intro.html # // apple_ref/док/UID/DTS40007416 –

-1

Одна вещь, я заметил, что вы не сохранить свой navigationController в AppDelegate. Так что может случиться так, что ваше представление navigationControllers может присутствовать и сохраняться (от all до addSubView), но навигационный контроллер, возможно, был освобожден.

в вашем AppDelegate попробовать что делает Навигационный контроллер удерживающее свойство

@property (nonatomic, strong) UINavigationController *navigationController 

в файле .m

@synthesize navigationController 

, а затем

Edit: Обновление для выталкивания контроллер представления

WebViewController *webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:NSBundle.mainBundle]; 
[self.navigationController pushViewController:webViewController animated:YES]; 
+0

Вы не можете быть серьезным. UIViewController имеет сохраненное свойство, называемое navigationController. Кроме того, если он был освобожден, приложение будет аварийно завершено. –

+0

Прочтите мой ** EDIT ** выше. –

+1

@fichek: Окно удерживается только в представлении UINavigationController, поэтому первое будет немедленно освобождено. Ответ richerd решает законную проблему. – titaniumdecoy