【发布时间】:2013-05-16 01:45:02
【问题描述】:
我觉得问这个很无知,因为我知道这很简单。目标:离开后在视图上保留一个变量,然后返回它。
例如:假设我们有 MainView、CategoryView 和 (drumroll) ProjectView
应用程序打开到 MainView 它显示一个表格 - 用户选择他们想要选择的类别。这将它们转移到 CategoryView。一旦做出选择,我将选择的类别发送回 MainView。通过
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
这里没问题。 MainView 接收变量并将所选类别显示为“类别”部分中的子文本。接下来,用户想要选择一个项目名称(这也是一个预定义列表),他们选择项目,然后我将变量发送回 MainView。
-- 现在有人可以(温和地)向我解释为什么当我返回主视图时,之前持有“选择”类别的 NSString 变量现在为空?
所以我的 NSString selectedProject 没有正确保留?我应该在这里做什么正确的实现?或者我错过了什么?我真的很想了解发生了什么,所以任何事情都会有很大帮助。
主视图界面
@interface MainViewController : UIViewController {
NSString *selectedProjectName;
NSString *selectedCategory;
}
@property (nonatomic, retain) NSString *selectedProjectName;
@property (nonatomic, retain) NSString *selectedCategory;
@end
MainView 实现
@implementation MainViewController
@synthesize selectedCategory, selectedProjectName;
如果你需要它.. ProjectView 实施
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"masterSegue"]) {
MainViewController *vc = (MainViewController *)[segue destinationViewController];
LogValues *lv = [LogValues alloc];
lv.project = @"Test Project Name";
vc.selectedProjectName = lv.project;
}
}
【问题讨论】:
-
可能因为您没有“返回”到主视图,您可能正在创建一个新实例。你如何“回到”主视图(什么类型的 segue)?
-
返回我已将 segue 设置为模态
标签: ios objective-c