【问题标题】:How do I save values from a UITextField in the FlipsideViewController and use them in the MainViewController?如何保存 FlipsideViewController 中 UITextField 的值并在 MainViewController 中使用它们?
【发布时间】:2012-12-15 05:10:03
【问题描述】:

在底部查看编辑

我正在为 iPhone 制作一个 UtilityView 应用程序,我希望能够更改 FlipsideViewController 的值。我有一个问题,每当我从 FlipsideView 切换回 MainView 时,我在 FlipsideView 中更改的文本字段的值似乎都重置为 0。在MainViewController.m 中,flipsideViewControllerDidFinish:

playToInt = [controller.playTo.text intValue];

computerMoveSpeed = [controller.aiSpeed.text intValue];

文本字段“playTo”与整数“playToInt”坐标,文本字段“aiSpeed”与整数“computerMoveSpeed”坐标。我认为这应该保存值,即使 ViewDidLoad 再次运行,但它们似乎都被重置为 0。

if (playToInt != 10 || computerMoveSpeed != 3)   
{
  playBool = true;
} 
else 
{
  playBool = false;
}

我知道布尔值有效,因为我可以用它更改整数的值,但它们总是默认为 0。感谢任何帮助。提前致谢。

注意:我已经咨询过上一个问题“将 UISegmentedControl 值从实用程序应用程序中的 FlipSideViewController 传递到主视图控制器......”这对我不起作用......我有太多可能的值来使用索引或开关.

编辑:我正在尝试一些我认为非常接近工作的东西......我觉得它只是语法不好或什么......我在 MainViewController.m 中:

computerMoveSpeed = [FlipsideViewController.aiSpeed.text intValue];

playToInt = [FlipsideViewController.playTo.text];

编辑:我有一些与上一个类似的东西,但我认为它会有更好的机会在一些帮助下工作......

FlipsideViewController.m我有

_playToNumber = [_playTo.text intValue];

MainViewController.m

playToInt = [controller.playToNumber];

非常感谢任何帮助,但作为一些附加信息,在MainViewController 中的字符串上它说它需要playToNumber 变量上的标识符,但它被声明为int...我不'不知道是否有ints 的标识符,但如果有,请告诉我!

编辑:有没有办法使用FlipsideViewController 中的prepareForSegue 函数将值保存为MainViewController 的可用格式?

编辑:我发现它只是在加载ViewDidLoad 时获取初始值,所以我开始使用计时器来检索值。这似乎有效,我只需要知道如何从 MainViewController 访问这些值?

【问题讨论】:

  • 使用 NSUserDefault 关注我的回答 stackoverflow.com/questions/13509999/…
  • 我不需要设置默认值,我已经这样做了...我需要能够保存我在背面更改的值并在主视图中使用它们
  • 你在使用 pushViewController
  • 然后将你的值复制到这个字符串中......然后在 viewWillAppear 中把这个字符串值放在你想要的地方
  • 在FlipsideViewController中,制作_playTo的属性,如@property(retain,.)..合成后使用

标签: iphone objective-c


【解决方案1】:

使用委托将值发送回MainViewController。请参阅 this tutorial 了解如何使用委托。

【讨论】:

    【解决方案2】:

    你有很多方法可以完成这项任务,

    1. NSUserDefault

    关注我的回答Link

    2. 使用Getters, setters, property

    关注我的回答Link

    编辑

    如果您想要intNSInteger,则无需保留
    做吧

    @property(nonatomic) NSInteger YourIntValue;
    

    _playToNumber = [_playTo.text intValue];
    
    MainViewController *MVC = [[MainViewController alloc] init];
    MVC.playToInt=_playToNumber;
    [self.navigationController pushViewController:MVC animated:YES];
    

    【讨论】:

    • 遵循说明,但我需要它是 intNSInteger 值,而不是 NSString,当我尝试时,它告诉我 copy 属性必须是对象类型...
    • 它运行没有错误,但我如何让它与我的 flipside 值相同?
    • 你是如何离开班级的另一边
    • 抱歉回复太长了...我已经有一周没有上网了,但我使用的是view 上安装的默认信息按钮和完成按钮(在导航栏中)默认。
    • 当您移动到新视图时,然后 paas 重视那个时间......并在新视图中使用..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    相关资源
    最近更新 更多