【问题标题】:iOS utility application-flipside view settingsiOS 实用程序应用程序翻转视图设置
【发布时间】:2011-10-28 11:01:33
【问题描述】:

我正在制作一个实用程序应用程序,并且我的主视图上有一个标签。根据用户的选择,该标签应该说明两件事之一。如何使用分段控件更改标签文本?

【问题讨论】:

    标签: ios settings uisegmentedcontrol


    【解决方案1】:

    在您的另一面,创建一个名为 segmentedControlChanged 的 IBAction - 并将其连接到分段控件上的“值更改”触发器。

    在设置控制器的顶部,声明这个常量:

    #define kSegmentKey @"SegmentSetting" // Call these whatever you want
    

    在您的 segmentedControlChanged 方法中,写入 NSUserDefaults,如下所示:

    - (IBAction)segmentedControlChanged:(id)sender {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setInteger:[sender selectedSegmentIndex] forKey:kSegmentKey];
    }
    

    在主视图控制器的viewWillAppear 中,输入以下代码:

    - (void)viewWillAppear:(BOOL)animated {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        int setting = [defaults integerForKey:kSegmentKey];
        if (setting == 0) {
            myLabel.text = @"First Message";
        }
        else {
            myLabel.text = @"Second Message";
        }
    }
    

    【讨论】:

    • viewWillAppear?你的意思是viewDidLoad?因为只要按照你说的做,如果我改变翻转视图上的选择,什么都不会发生
    • 不,viewWillAppear - 因为当您翻转视图时视图可能会保留在内存中(尝试在 viewDidLoad 中记录一些内容,看看当您翻转视图时它是否出现)
    • 好吧,默认情况下,应用程序没有 viewWillAppear 方法。那么,我需要调用它吗?如果有,在哪里?
    • 所有视图控制器都有 viewWillAppear - 你只需要实现它。在你的主控制器中的 viewDidLoad 开始输入 - (void)viewWill... 之后它会告诉你方法!
    • 好的。该函数正在被调用。但我添加了 NSLogs 说明突出显示哪个段,无论如何,它都显示 1,并且文本永远不会改变
    【解决方案2】:

    你可以:

    (1) 将分段控件的值存储在作为返回值传递给FlipsideViewControllerDidFinish 方法的变量中,否则

    (2) 将值存储在Flipside 视图和First 视图均可访问的某个区域,例如[NSUserDefaults standardUserDefaults]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 2016-11-21
      • 2015-08-07
      相关资源
      最近更新 更多