【问题标题】:Xcode: Why doesn't my app save the UITextField?Xcode:为什么我的应用程序不保存 UITextField?
【发布时间】:2011-09-25 19:27:51
【问题描述】:

我有一个应用程序,我使用 presentModalViewController 切换到带有 TableView 的视图。然而,带有 TableView 的视图不在 UITableViewController 上,而是在常规的 UIViewController 上。我已将 UITextFields 写入 UITableViewCells。我使用此操作来保存用户输入的内容:

- (IBAction)saveTextField:(id)sender {

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:TextField.text forKey:@"keyTextField"];
[userDefaults synchronize]; }

我用这段代码调用这个方法:

    [TextField addTarget:self action:@selector(hideKeyboard:) forControlEvents:UIControlEventEditingDidEndOnExit];

当我使用dismissModalViewController 关闭ViewController,然后当我再次展示它时,我使用以下代码调用ViewDidLoad 中的NSUserDefaults:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
TextField.text = [userDefaults objectForKey:@"keyTextField"];

问题是它不起作用。我无法弄清楚问题所在。任何帮助将不胜感激。

提前致谢:)

【问题讨论】:

  • 尝试在“savetextfield”方法中设置断点。检查方法是否被调用。然后,在这里发布结果。。

标签: iphone xcode uitableview uitextfield nsuserdefaults


【解决方案1】:

target 必须与您的方法相同,这意味着如果您有- (void)saveTextField:(id)sender,那么您添加目标的代码需要是

 [TextField addTarget:self action:@selector(saveTextField:) forControlEvents:UIControlEventEditingDidEndOnExit];

如果您的操作正在运行,请检查NSLog

【讨论】:

  • 哦实际上已经是...我刚刚发布了错误的代码...所以问题仍然存在:(
【解决方案2】:

您不能使用 textFieldDidEndEditing: 委托方法来保存而不是设置目标吗?

【讨论】:

    【解决方案3】:

    在视图中使用此代码确实加载 NSUserDefaults *user=[NSUserDefaults standardUserDefaults]; TextField.text=[user stringForKey:@"keyTextField"];

    【讨论】:

      【解决方案4】:

      首先:感谢大家的努力和时间:)

      原来问题不在于保存和加载它的代码。问题是我只创建了一个 UITextfield,然后将其放入每个 UITableViewCell 中,这就是问题所在。所以我为每个 UITableViewCells 创建了单独的 UITextFields 并解决了问题:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-26
        • 1970-01-01
        • 2015-05-05
        • 1970-01-01
        • 2020-01-27
        • 1970-01-01
        • 2011-04-03
        相关资源
        最近更新 更多