如何不在uinavigationcontroller中调用viewdidload?

我正在寻找一个解决我的情况。 我的应用程序如下:

在VC1上有一个文本框和button。 用户input一个名字。 然后点击一个button。 这个button打开VC2。 用户在VC2中给出附加信息,然后按保存。 我用一个segue返回到VC1并将这些附加信息作为string传送给VC1。 但在VC1 viewdidload已经调用,并由于该文本字段中的信息被删除! 如何在不使用viewdidload的情况下导航VC?

我发现了一些关于单身物件的信息。 如果我可以定义一个活着的对象,那么通过风险投资会很好。 我怎么能有一个多个领域的对象,并一直活着。

我怕你为什么用push segue回退。

在这里,你需要从VC-A到VC-B的push-segue,并将它的标识符命名为moveForward和button press call

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

如果你想传递给VC-B的任何信息通过这个方法

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

同样的,当你必须从VC-B返回到VC-A时,从VC-B到VC-A分配一个倒带段,并将它的标识符命名为moveBack和onbutton,在VC-B中也做上述提到的方法。

viewDidLoad方法在UIViewController的每个生命周期中只调用一次,所以很可能你创build了一个新的VC1。 您需要继续参考第一个VC1并返回到该视图控制器。

要使用UINavigationController进行导航,请使用以下方法:

 [self.navigationController pushViewController:VC2]; [self.navigationController popViewControllerAnimated:YES]; 

(在VC1 / VC2内部调用它们)

这里是如何定义称为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 

然后如果你想编辑或设置任何类的variables的值我会做以下几点:

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

如果我想检索任何类中的variables的值我做以下操作:

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