【问题标题】:UISegmentedControl in static UITableViewCell静态 UITableViewCell 中的 UISegmentedControl
【发布时间】:2014-06-04 10:58:50
【问题描述】:

UISegmentedControl 遇到了一个非常奇怪的问题,这种简单的界面元素不会出现这种问题。我在我的 Storyboard 中为我的表格视图设计了一个静态单元格(表格视图有 8 个单元格,其中许多带有界面元素,如步进器和工作正常的标签),其中包含一个 UISegmentedControl。我将接口对象链接到以下正确的方法:

@property (strong, nonatomic) IBOutlet UISegmentedControl *plantHealthSegmentedControl;
- (IBAction)plantHealthValueChanged:(id)sender;

奇怪的是,当我在viewDidLoad 方法中初始化分段控件时,界面对象并没有改变故事板编辑器中设置的默认值。这是在我的表格视图的实现文件中用于修改它的代码:

plantHealthSegmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Excellent", @"Good", @"Poor", @"Dead", nil]];
plantHealthSegmentedControl.tintColor = gardenGreenColor;
plantHealthSegmentedControl.selectedSegmentIndex = 0;

我的plantHealthValueChanged 方法如下(它总是将 -1 记录为所选索引

- (IBAction)plantHealthValueChanged:(id)sender {

    NSLog(@"Segmented control index = %i", plantHealthSegmentedControl.selectedSegmentIndex);
}

非常感谢您对这个奇怪问题的任何帮助!

【问题讨论】:

    标签: ios objective-c cocoa-touch uitableview uisegmentedcontrol


    【解决方案1】:

    问题是您正在重新初始化控件。这消除了情节提要参考,并创建了一个全新的不与任何东西挂钩的参考。

    你需要去掉这条线:

    plantHealthSegmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Excellent", @"Good", @"Poor", @"Dead", nil]];
    

    我建议直接在界面生成器中设置段信息,因为您在那里创建了控件。

    或者,如果您想在代码中执行此操作,有几种方法。您可以使用insertSegmentWithTitle:atIndex:animated: 单独添加它们。但是,如果有任何片段来自 NIB,您可能需要先致电 removeAllSegments

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多