我的UISegmentedControl中有一个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并返回,它将仅显示默认的选定细分!任何想法?

最佳答案

更改视图控制器后,再次返回viewDidLoad方法,这就是为什么看到默认选定索引的原因。解决此问题的方法是将选定的选定索引存储到某些应用程序委托属性中,或者可以创建单例类以进行更好的设计以保留状态。并在viewDidLoadMethod中。

-viewDidLoad
{
  AppDelegate *delegate=[[UIApplication sharedAppliection]delegate];
  [_Segment setSelectedSegmentIndex:delegate.selectedIndex];
}


这将为您工作。

09-07 08:30