我有一个 UISegmentedControl 像模态窗口一样显示/隐藏。最初它没有选定的段。在 IB 中,Value Changed 事件连接到方法 - (IBAction)cardClassificationChanged:(UISegmentedControl *)sender。这是那个方法:
- (IBAction)cardClassificationChanged:(UISegmentedControl *)sender
{
NSLog(@"%d", sender.selectedSegmentIndex);
// block for updating the categorization of current card asynchronously
[self.cardActionSheet hideWithAnimation];
}
如果我注释掉最后一行(对 -hideWithAnimation 的调用),则选择会按预期更改,一切正常。但是,通过调用该动画方法,UISegmentedControl 选择在动画之前不会在视觉上发生变化。这是 hideWithAnimation 方法:
- (void)hideWithAnimation
{
CATransition *animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = globalAnimationLength;
[self.layer addAnimation:animation forKey:nil];
self.hidden = YES;
}
下次出现此视图时(通过触摸手势), UISegmentedControl 将选择正确的段。
似乎我不应该为 UISegmentedControl 调用 setNeedsDisplay,但即使我在 cardClassificationChanged 方法或 hideWithAnimation 方法中尝试它,它也不会刷新。
我显然缺少与 UI 更新相关的内容,我需要调用什么来在动画之前更新 UISegmentedControl 选择?