Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在uinavigationcontroller中不调用viewdidload?_Ios_Objective C_Iphone_Xcode - Fatal编程技术网

Ios 如何在uinavigationcontroller中不调用viewdidload?

Ios 如何在uinavigationcontroller中不调用viewdidload?,ios,objective-c,iphone,xcode,Ios,Objective C,Iphone,Xcode,我正在寻找解决我的处境的办法。我的应用程序如下: 在VC1上有一个文本字段和按钮。用户键入一个名称。然后点击一个按钮。这个按钮打开VC2。用户在VC2中提供其他信息,然后按save。我使用segue返回到VC1,并将这些附加信息作为字符串传输到VC1。但在VC1中,viewdidload已调用,因此文本字段中的信息被删除!!!如何在VC之间导航而不调用viewdidload 我找到了一些关于单例对象的信息。如果我能定义一个对象,它在我通过VCs时是活动的,那就太好了。如何使一个对象具有多个字段且

我正在寻找解决我的处境的办法。我的应用程序如下:

在VC1上有一个文本字段和按钮。用户键入一个名称。然后点击一个按钮。这个按钮打开VC2。用户在VC2中提供其他信息,然后按save。我使用segue返回到VC1,并将这些附加信息作为字符串传输到VC1。但在VC1中,viewdidload已调用,因此文本字段中的信息被删除!!!如何在VC之间导航而不调用viewdidload


我找到了一些关于单例对象的信息。如果我能定义一个对象,它在我通过VCs时是活动的,那就太好了。如何使一个对象具有多个字段且始终处于活动状态。

以下是如何定义称为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] ; 
}
如果我想在任何类中检索变量的值,我会执行以下操作:

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

viewDidLoad方法在UIViewController的每个生命周期中只调用一次,所以很可能您正在以某种方式创建新的VC1。您需要保持对第一个VC1的引用并返回到该视图控制器

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

[self.navigationController pushViewController:VC2];

[self.navigationController popViewControllerAnimated:YES];

(在VC1/VC2内呼叫他们)

我担心您为什么要使用push segue向后移动

在这里,您需要分配一个从VC-a到VC-B的推送序列,并将其标识符命名为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和on按钮press
在VC-B中也使用上述方法。

我不能清楚地理解你的问题。你能在这里发布你的代码吗?你是如何显示VC2的?如果有任何答案对你有帮助,请向上投票或标记为答案..ArtusOlszak给出了正确的答案,但你真的应该花些时间阅读以下内容:问题不够清楚,没有提供现有的代码