2015-08-28 64 views
-1

我正在尋找解決方案來解決我的情況。我的應用程序如下:如何不在uinavigationcontroller中調用viewdidload?

在VC1上有一個文本框和按鈕。用戶輸入名稱。然後點擊一個按鈕。這個按鈕打開VC2。用戶在VC2中提供附加信息,然後按保存。我使用segue返回到VC1並將這些附加信息作爲字符串傳送給VC1。但在VC1 viewdidload已經調用,並由於該文本字段中的信息被刪除!如何在VC之間導航而不需要回顧viewdidload?

我發現了一些關於單身物體的信息。如果我可以定義一個活着的對象,那麼我會經歷風險投資會很好。我怎麼能有一個多個領域的對象和所有的時間。

+0

你是怎麼看VC2的? – Misha

+0

如果任何的答案幫助你,請投票或標記爲答案。 –

+0

ArtusOlszak給出了正確的答案,但你真的應該花一些時間閱讀這個:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/ –

回答

2

恐怕是爲什麼你正在使用推SEGUE回遷。

在這裏,你需要從VC-A assing推SEGUE到VC-B和名稱,如moveForward並按下按鈕呼叫其標識符

[self performSegueWithIdentifier:@"moveForward" sender:self]; 

和如果u想要的任何信息傳遞給VC-B通它在該方法中

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 
    if([segue.identifier isEqualToString:@"moveForward"]) 
    { 
     VC-B* vcObject=[segue destinationViewController]; 

     //vcObject.info = your info//etc 
    } 
    } 

在當u必須從VC-B返回到VC-A分配從VC-B倒帶SEGUE到VC-A並命名其標識符等moveBack和上按鈕按下一個相同的方式 並在VC-B中也做上述提及方法。

-1

這裏是你如何定義被稱爲AppShareData單例類: AppShareData.h

@interface AppSharedData : NSObject 
+(AppSharedData*)sharedInstance ; 
@property (nonatomic) BOOL sharedBoolVariable ; 
@end 

AppShareData.m:

@implementation AppSharedData 
@synthesize sharedBoolVariable; 
+(AppSharedData *) sharedInstance 
{ 
    static AppSharedData *_sharedInstance = nil; 
    static dispatch_once_t Token; 
    dispatch_once(&Token, ^{ 
    _sharedInstance = [[AppSharedData alloc]init]; 
    }); 
    return _sharedInstance; 
} 
@end 

,然後如果你要編輯或設置的值的任何一類變量我會做以下幾點:

-(void)editMethod 
{ 
    AppSharedData * dataObject = [AppSharedData sharedInstance] ; 
    dataObject = YES ; 
} 

和如果我想檢索任何類變量的值,我做到以下幾點:

-(void)retrieveMethod 
{ 
    AppSharedData * dataObject = [AppSharedData sharedInstance] ; 
    BOOL someVariableInMyClass = [dataObject sharedBoolVariable] ; 
} 
2

viewDidLoad方法被調用每UIViewController中的生命週期只有一次,所以很可能要創建新莫名其妙VC1。您需要繼續參考第一個VC1並返回到該視圖控制器。

要導航使用的UINavigationController使用這些方法:

[self.navigationController pushViewController:VC2]; 

[self.navigationController popViewControllerAnimated:YES]; 

(叫他們VC1/VC2內)

相關問題