如何不在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] ; }