【问题标题】:How to Set the UIPickerView Initiated Row?如何设置 UIPickerView 启动行?
【发布时间】:2011-10-21 13:10:46
【问题描述】:

我在我的应用程序中使用UIPickerView。我使用了一些教程来进行设置并从用户那里获取选定的数据,并且工作正常。

我不清楚的是如何告诉UIPickerView,当它用数据启动时(使用- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component),指向某个值。

更具体一点:

  • 我有一个 UIPickerView,其中包含一个 NSStrings 数组
  • 一旦用户选择了一个值,我就会得到它并通过NSUserDefaults 保留它
  • 当用户返回到拥有UIPickerViewUIViewController 时,我想从NSUserDefaults 获取保存的数据,并让UIPickerView 指向保存在那里的值。

我应该在哪里编写设置这些数据的代码?

【问题讨论】:

    标签: ios settings uipickerview nsuserdefaults


    【解决方案1】:

    你可以写在ViewWillAppear:(因为这是你要设置数据的时候)。

    您可以从您的模型(Core Data、NSUSerDefaults、Plist 等)读取值并使用:

    - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated
    

    这是UIPickerView的一个方法。

    【讨论】:

      【解决方案2】:

      我有一段时间遇到同样的问题。这是我的解决方案:

      在 viewDidLoad 中

      [_picker selectRow:[[[NSUserDefaults standardUserDefaults]objectForKey:"objectname"]intValue] inComponent:0 animated:YES];
      

      这可确保您转到包含该对象的行。上面的答案几乎是一个如何指定确切 NSUserDefault 行的示例。

      【讨论】:

        【解决方案3】:

        这很好用!试试吧!我在示例中使用的rowNumberSelectedFirst 只是一个变量,它保存了您希望在加载UIPickerView 时首先选择的行号。

        对于 swift 3,您可以使用它。

        let rowNumberSelectedFirst: Int = 3
         pickerView.selectRow(rowNumberSelectedFirst, inComponent: 0, animated: true)
        

        对于 Objective-C 你可以使用这个

        int rowNumberSelectedFirst = 3; 
        [picker selectRow:rowNumberSelectedFirst inComponent:0 animated:YES];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-31
          • 2012-11-25
          • 1970-01-01
          • 2014-11-12
          • 1970-01-01
          • 1970-01-01
          • 2010-10-15
          相关资源
          最近更新 更多