更改UISegmentedControl的选定段 [英] Change selected segment of UISegmentedControl

查看:62
本文介绍了更改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并返回时,它将仅显示默认选择的细分!有什么主意吗?

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的选定段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆