我有两个视图控制器说NewGroupView
和GroupsTabView
。我必须从我的第一个视图控制器设置第二个视图控制器的bool值。这是我从第一个视图控制器设置第二个视图控制器的值的方法。
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
在我的viewDidLoad方法中,我尝试将其打印如下,
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(isGroupViewMode ? @"Yes" : @"No");
}
但问题是它总是打印NO虽然我已将其设置为YES。 为什么指定的值不会持续存在?
答案 0 :(得分:2)
使用代码
在NewGroupView
中创建一个属性
@property (nonatomic, assign) BOOL isGroupViewMode;
在第一个视图控制器中编写以下代码:
NewGroupView *groupView = [self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"];
groupView.isGroupViewMode = YES;
[self presentViewController:groupView animated:YES completion:nil];
您可以使用第二个视图控制器(viewDidLoad方法)中的日志进行检查:
NSLog(@"%@",isGroupViewMode);
替代方法,您可以将布尔值存储到第一个视图控制器的NSUserDefault中,并从第二个视图控制器访问该值。
答案 1 :(得分:2)
NewGroupView *groupView = [self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"];
上面的行调用viewDidLoad
,这是你打印NSLog的地方,BOOL值仍然是&#34; NO&#34; ,因为尚未确定。
现在你打电话:
groupView.isGroupViewMode = YES;
但是你不能在你的NSLog中看到它,因为之前已经调用了viewDidLoad
。
修改强>
评论使用 - &gt;的初始案例也会奏效。
答案 2 :(得分:1)
在.h文件中声明您的BOOL属性
@interface NewGroupView : UIViewController<UITableViewDelegate,UITableViewDataSource>
@property(nonatomic,assign) BOOL isGroupViewMode;
@end
然后在.m文件中合成它
@synthesize isGroupViewMode;
NewGroupView *groupView = (NewGroupView *)[self.storyboard instantiateViewControllerWithIdentifier:@"NewGroupViewNC"];
groupView.isGroupViewMode=YES;
[self presentViewController:groupView animated:YES completion:nil];
&安培;希望这会对你有所帮助。