【发布时间】:2014-08-07 07:19:58
【问题描述】:
情况是这样的。我有 3 个视图控制器,分别命名为 A、B 和 C。
我正在从 A 导航到 B 并传递一些字符串,将其称为 receivedMember。
在 B 中,当我写 NSLog(@"Name is %@", _receivedMember); // 它打印从 A
然后从 B 导航到 C 并再次返回到 B。所以当我回到B时,我检查了name的值。它是null。
-(void) viewDidAppear:(BOOL)animated{
NSLog(@"DID APPEAR %@\n", _receivedMember); // (null)
}
-(void) viewWillAppear:(BOOL)animated
{
NSLog(@"WILL APPEAR %@\n", _receivedMember); // (null)
}
编辑这是代码
在 A 类中,A ---> B
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"searchpage"])
{
B *cl = segue.destinationViewController;
cl.receivedMember = strMemberType;
}
}
我从 pickerview 获取strMemberType,
-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component
{
strMemberType = [memberTypeArray objectAtIndex:row];
}
在 C 类中,C ---> B
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"backToSearchSegue"])
{
B *cs = segue.destinationViewController;
}
}
B.h
@property (nonatomic, copy) NSString *receivedMember;
当我从C返回B时,我怎样才能得到相同的值。?我对iOS很天真,所以请帮助我。无论如何我可以将它们存储在缓存文件中吗?这样我就可以在任何课程中访问它。
【问题讨论】:
-
使用单例或应用委托代理方法
-
能否给一些链接或者写代码?我对 iOS 很天真。
-
一旦签入 B 类,有些地方你正在清除 _name 中的数据。
-
@Sunny 不,我没有清除任何东西。
-
或者您可以简单地使用 NSUSerDeafults...当您从 B 切换到 C 时保存价值..并在 C 中再次检索到 B 的 ViewWillAppear
标签: ios objective-c navigation