【问题标题】:selectedSegmentIndex doesn't changeselectedSegmentIndex 不会改变
【发布时间】:2015-11-11 19:53:39
【问题描述】:

我有一个带有一行的 UITableView,在这一行内我有一个带有 3 个段的 UISwitch。就我而言,我需要使用按标签选择的代码来获取选定的索引:

- (void)viewDidLoad {
[super viewDidLoad];

    UITableViewCell *cellAttachment = [_tableView dequeueReusableCellWithIdentifier:@"MyCell0"];

    UISegmentedControl *btnAttachment = nil;
    btnAttachment = (UISegmentedControl*)[cellAttachment viewWithTag:100];
    NSLog(@"Segment -> %ld",(long)btnAttachment.selectedSegmentIndex);
}

使用此代码,我可以选择段,但是当我尝试更改段时:

btnAttachment.selectedSegmentIndex = [self.arrayFields[19] intValue];//Inside this array has a number 1!

什么都没做,有什么问题吗? (我没有 IBOutlet,可能吗?)

【问题讨论】:

    标签: ios objective-c uitableview uiswitch


    【解决方案1】:

    您可以在没有 IBOutlet 的情况下执行此操作。您只需从代码中添加操作处理程序(在 viewDidLoad 中):

    [btnAttachment addTarget:self action:@selector(segmentedControlDidChange:) forControlEvents:UIControlEventValueChanged];
    

    然后添加动作方法:

    -(void)segmentedControlDidChange:(UISegmentedControl *)sender {
    NSLog(@"Segment -> %ld",(long) sender.selectedSegmentIndex);
    }
    

    【讨论】:

    • 很好,但是当用户单击时我不需要获取 selectedIndex,我需要以编程方式更改 SelectedIndex..
    • 哦,我明白了。当您以编程方式设置 selectedSegmentIndex 时,操作方法不会被调用。这是 UI 控件中期望的常见行为。 2解决方案:子类UISegmentedControl或设置selectedSegmentIndex后手动调用[btnAttachment sendActionsForControlEvents:UIControlEventValueChanged];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2014-02-05
    相关资源
    最近更新 更多