2013-02-14 59 views
0

我在iOS上遇到了我的應用程序問題。我試圖在一些ViewControllers之間切換,但它不能正常工作。切換ViewController

現在我有三個ViewControllers,第一個將是一個閃屏圖像,並在特定的時間切換到第二個ViewController,但在這一刻,第一個View使用一個按鈕來執行此操作。第二個視圖是一個登錄屏幕,但現在它是一個假按鈕,切換到第三個ViewController,它將執行一些複雜的事情。

我的問題是在從第一個ViewController切換到第二個。如果我使用附加到按鈕的IBAction,它可以正常工作,但是如果我使用NSTimer或類似performSelector/PerformSelectorOnMainThread的東西,它將無法正常工作(應用程序方向更改並且第二個ViewController中的按鈕不起作用)。

ViewController1.m

#import "ViewController.h" 
#import "LoginViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    float timer=5.0; 
    [self performSelector:@selector(startAfterInterval) withObject:nil afterDelay:timer]; 
} 

- (void) startAfterInterval { 
    LoginViewController * loginViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 

    [[[self view] window] addSubview:loginViewController.view]; 
} 

- (IBAction)NextView:(id)sender { 
    LoginViewController * loginViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 

    [[[self view] window] addSubview:loginViewController.view]; 
} 
@end 

誰能幫助我?感謝您的建議。

+0

而不是呈現一個新的視圖控制器使用imageview動畫5秒,並隱藏顯示您的視圖登錄。 這只是一個建議。 – 2013-02-14 06:53:34

回答

1

我試過你的代碼,得到了不同的結果,但它們不穩定。有時,單擊LoginViewController中的按鈕可以工作,而其他時間則會導致崩潰。原因是LoginViewController被釋放。您將視圖添加到窗口,但不是控制器 - 這不是它應該完成的方式。如果你想只改變控制器不使用導航控制器或一個模式的介紹,那麼你應該改變窗口的根視圖控制器,而不是添加一個觀點:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    float timer=5.0; 
    [self performSelector:@selector(startAfterInterval) withObject:nil afterDelay:timer]; 
} 

- (void) startAfterInterval { 
    LoginViewController * loginViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
    self.view.window.rootViewController = loginViewController; 
} 

- (IBAction)NextView:(id)sender { 
    LoginViewController * loginViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
    self.view.window.rootViewController = loginViewController; 
} 

這兩種方法都將正常工作,如果你這樣做就這樣。

+0

它完美地工作。非常感謝。但我應該調查模態的方式。 – tetoct 2013-02-14 07:33:40

相關問題