ios - 如何在 View 更改时保留 UITextField 文本

标签 ios objective-c xcode uitextfield

我有两个 UITextFields,我将其输入存储到字符串 player1player2 中。这些 UITextFields 位于由 popOver segue 调用的 ViewController 上。 View 更改后,如何使 UITextFields 继续显示其文本?

我在ViewControllerviewDidLoad部分尝试了textFieldOne.text = player1;,但没有成功。有什么想法吗?

最佳答案

如果您加载的 View 的委托(delegate)不是ViewController,您的代码将不会被执行。因此,请确保您的代码位于已加载 View 的委托(delegate)上。还可以使用[textFieldOne setText:player1]。调用 setter 方法总是比直接设置 ivar 更好。然后确保您的 UITextField 不为零并且已正确绑定(bind)。使用 textFieldOne = [[UITextField alloc] init] 对其进行初始化。如果问题仍然存在,请尝试[textFieldOne setText:self.player1]。希望它有帮助..

编辑: 在这里得到了解决方案。您应该使用 NSUserDefaults 以便存储您的玩家名称,并且可以在每个 View 中使用,甚至在重新打开应用程序后也可以使用(如果您不希望这样,您可以在午餐时删除默认值。这里是您需要更改的一堆代码:

hardOne.m:

- (void)viewDidLoad
{
[super viewDidLoad];
[hard1ON setOn:switchState animated:NO];
//read player names to user defaults
[textFieldOne setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"player1"]]; 
[textFieldTwo setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"player2"]];
}

- (IBAction) returnKey1
{
player1 = [textFieldOne text];
[players addObject:(player1)];
//set player1's name to user defaults
[[NSUserDefaults standardUserDefaults] setValue:[textFieldOne text] forKey:@"player1"];
}

- (IBAction) returnKey2
{
player2 = [textFieldTwo text];
[players addObject:(player2)];
NSLog(@"array: %@",players);
//set player2's name to user defaults
[[NSUserDefaults standardUserDefaults] setValue:[textFieldTwo text] forKey:@"player2"];
}

关于ios - 如何在 View 更改时保留 UITextField 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15280280/

相关文章:

objective-c - 无法形成委托(delegate)的弱属性

ios - 将 iPhone X 布局支持添加到旧的 Xcode 7/Swift 2 项目

ios - 内存堆积,在ViewController之间切换,什么是ok的?

ios - 当 flatMapped 时,Combine 的 Future 永远不会完成

ios - 如何在 tableview xcode 中调整标题的大小和颜色

ios - iPhone X swift 4 中的 setExposureModeCustom 崩溃

c++ - X代码 6 : Unable to create watchpoint

ios - UISlider 设置值

objective-c - 检测四个手指手势(Cocoa)

iOS Objective-C : Support Right To Left