Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.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/23.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 从第一视图控制器分配的值未持久化_Ios_Objective C - Fatal编程技术网

Ios 从第一视图控制器分配的值未持久化

Ios 从第一视图控制器分配的值未持久化,ios,objective-c,Ios,Objective C,我有两个视图控制器,分别是NewGroupView和GroupsTabView。我必须从第一个视图控制器设置第二个视图控制器的布尔值。这就是我如何从我的第一个视图控制器设置第二个视图控制器的值 NewGroupView *groupView = [self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"]; NewGroupView *ngv = [NewGroupView new]; ngv->is

我有两个视图控制器,分别是
NewGroupView
GroupsTabView
。我必须从第一个视图控制器设置第二个视图控制器的布尔值。这就是我如何从我的第一个视图控制器设置第二个视图控制器的值

NewGroupView *groupView = [self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"];
NewGroupView *ngv = [NewGroupView new];
ngv->isGroupViewMode=YES;
groupView.isGroupViewMode = YES;
[self presentViewController:groupView animated:YES completion:nil];
@interface NewGroupView : UIViewController<UITableViewDelegate,UITableViewDataSource>
@property(nonatomic,assign)    BOOL  isGroupViewMode;
@end
下面是我的第二个视图控制器的接口声明

NewGroupView *groupView = [self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"];
NewGroupView *ngv = [NewGroupView new];
ngv->isGroupViewMode=YES;
groupView.isGroupViewMode = YES;
[self presentViewController:groupView animated:YES completion:nil];
@interface NewGroupView : UIViewController<UITableViewDelegate,UITableViewDataSource>
@property(nonatomic,assign)    BOOL  isGroupViewMode;
@end
但问题是,它总是打印“否”,尽管我已将其设置为“是”。
为什么分配的值没有持久化?

NewGroupView
中使用以下代码创建属性:

@property (nonatomic, assign) BOOL isGroupViewMode;
并在first view controller中编写以下代码:

NewGroupView *groupView = [self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"];

groupView.isGroupViewMode = YES;
[self presentViewController:groupView animated:YES completion:nil]; 
您可以使用第二个视图控制器中的日志(viewDidLoad方法)进行检查:


或者,您可以从第一个视图控制器将布尔值存储到NSUserDefault中,并从第二个视图控制器访问此值。

在.h文件中声明您的布尔属性

NewGroupView *groupView = [self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"];
NewGroupView *ngv = [NewGroupView new];
ngv->isGroupViewMode=YES;
groupView.isGroupViewMode = YES;
[self presentViewController:groupView animated:YES completion:nil];
@interface NewGroupView : UIViewController<UITableViewDelegate,UITableViewDataSource>
@property(nonatomic,assign)    BOOL  isGroupViewMode;
@end
@interface NewGroupView : UIViewController<UITableViewDelegate,UITableViewDataSource>
@property(nonatomic,assign)    BOOL  isGroupViewMode;
@end
&希望这对你有帮助

NewGroupView *groupView = [self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"];
上面的行调用了
viewDidLoad
,这是您打印NSLog的地方,BOOL值仍然是“NO”,因为它尚未设置

现在你叫:

groupView.isGroupViewMode = YES;
但是您无法在NSLog中看到它,因为以前已经调用了
viewDidLoad

编辑:

如@

使用->的初始情况也适用


@不要写无用的评论和回答<代码>->用于访问实例变量。请检查此ans:@VyachaslavGerchicov实际上点符号用作setter/getter,而->不是setter。OP,为什么您要实例化一个新的GroupView,同时用新方法创建另一个?@sleek replace
->
和带有实例变量声明的属性将起作用。至少只是尝试在同一时间设置和获取变量thread@VyachaslavGerchicov我说的是它与使用点表示法不同,因为它调用setter和getter方法,与->不同,我不知道你是否编辑了评论,或者我是否太累了,读错了你的评论……然而,即使这不是本例中的问题。@user31231234124你的代码似乎是正确的,但你在另一个地方遇到了问题。1) 检查哪个先执行-
viewDidLoad
或将bool变量设置为
YES
;2) 您将两个不同的变量设置为“是”-您何时尝试检查哪一个?@VyachaslavGerchicov我同意您的看法。viewDidLoad方法将在InstanceViewControllerWithiIdentifier中被调用,他将在viewDidLoad之后设置BOOL值。应该将NSLog移动到ViewDidDisplay或其他位置。您应该将其添加为答案,因为这是对该问题的正确答案。顺便说一句。
@property BOOL isGroupViewMode在第二个VC中。@AntonyRaphel为什么?请添加一个附加内容,即使用
->
的初始案例也会起作用。@VyachaslavGerchicov完成