首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >popViewControllerAnimated后UITextField内容为空

popViewControllerAnimated后UITextField内容为空
EN

Stack Overflow用户
提问于 2012-06-18 21:48:34
回答 4查看 1.5K关注 0票数 0

在我的应用程序中,我使用的是导航控制器。我的问题是,当我转到上一个视图,然后返回到当前视图时,这个视图中的所有TextFields都是空的。

当我从导航控制器浏览堆栈时,我不知道如何保存这些值(在文本字段中)。

下面是我调用popViewControllerAnimated的方法:

代码语言:javascript
复制
- (IBAction)swipeBack:(id)sender {
    [self.navigationController popViewControllerAnimated:YES];
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-19 18:12:50

在上一个视图的.h文件中,声明一个属性:

代码语言:javascript
复制
@property (noonatomic, retain) YOURVIEWCONTROLLER *secondVC;

然后在您的@实现中,合成属性:

代码语言:javascript
复制
@synthesize secondVC;

然后用以下代码替换您将视图控制器表示为模式视图的代码:

代码语言:javascript
复制
if(!secondVC){
    YOURVIEWCONTROLLER *controller=[[YOURVIEWCONTROLLER alloc]init.......];
    [self setSecondVC:controller];
    [controller release];//if you ain't using arc else just set it to nil
    controller=nil;
}
[self presentModalViewController:self.secondVC animated:YES];

‘'YOURVIEWCONTROLLER’是包含文本字段的第二个视图控制器的类名。不要忘记释放-dealloc中的secondVC属性。希望能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-06-18 21:55:36

当您推入或弹出视图控制器时,将分别从内存中加载或卸载它。您需要在弹出控制器之前保存该信息,并在分配新的控制器之后并在将其推送到堆栈之前加载该信息。您可以使用NSUserDefaults或基本文件I/O来保存和重新加载信息。

保存:

  • 使用上述方法之一保存数据。
  • 然后弹出视图控制器。

正在加载:

  • 将视图和数据加载到视图控制器(使用属性、单例等)
  • 推送视图控制器。
票数 1
EN

Stack Overflow用户

发布于 2012-06-18 21:56:04

这里有两件事要处理: 1.保存文本字段的内容。2.再次按下视图控制器时,恢复文本字段的内容。

第一个问题可以通过将文本字段值保存到全局对象(如AppDelegate或任何其他全局单例)来解决。

处理2的最好方法是为带有文本字段的视图控制器创建初始化器。例如:

代码语言:javascript
复制
- (id)initWithOptions:(NSDictionary*)options;

然后,当您需要将控制器推送到堆栈上时,您将从1的全局存储中获取先前保存的值,并将它们传递到选项字典中。然后,在viewDidLoad中,将这些值分配给字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11084287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档