问题描述
我的ModeViewController
ModeViewController.h:
@property (weak, nonatomic) IBOutlet UISegmentedControl *Segment;
- (IBAction)switchMode:(id)sender;
ModeViewController.m:
- (IBAction)switchMode:(id)sender {
//I Tried this way
UISegmentedControl *segmentedControl = (UISegmentedControl *) sender;
_Segment.selectedSegmentIndex = segmentedControl.selectedSegmentIndex;
//or this way
NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;
[_Segment setSelectedSegmentIndex:selectedSegment];
}
但是,当我更改为ViewController
并返回时,它将仅显示默认选择的细分!有什么主意吗?
But as soon as I change to ViewController
and come back it will only display the default selected Segment! Any idea?
推荐答案
更改视图控制器后,您再次调用viewDidLoad方法,这就是为什么看到默认选定索引的原因.解决此问题的方法是将选定的选定索引存储到某些应用程序委托属性中,或者可以为更好的设计创建单例类以保留状态.并在您的viewDidLoadMethod中.
After you change view controller and you come back the viewDidLoad method called again thats why you are seeing the default selected index. The way to overcome this is store the selected the selected index into some app delegate property or you can create singleton class for the better design to preserve the state .And in your viewDidLoadMethod .
-viewDidLoad
{
AppDelegate *delegate=[[UIApplication sharedAppliection]delegate];
[_Segment setSelectedSegmentIndex:delegate.selectedIndex];
}
这将为您工作.
这篇关于更改UISegmentedControl的选定段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!