我的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
并返回,它将只显示默认选定的细分!有什么想法吗?
答案 0 :(得分:2)
更改视图控制器后,再次调用再次调用的viewDidLoad方法,这就是您看到默认选定索引的原因。解决这个问题的方法是将选定的索引存储到某个app delegate属性中,或者您可以创建单例类以获得更好的设计以保留状态。并且在viewDidLoadMethod中。
-viewDidLoad
{
AppDelegate *delegate=[[UIApplication sharedAppliection]delegate];
[_Segment setSelectedSegmentIndex:delegate.selectedIndex];
}
这对你有用。
答案 1 :(得分:2)
<强>问题强>
这里的问题是,ViewController以模态方式呈现,其中的属性只有生命周期,直到它被解除。
检查你的代码将会有一个viewcontroller实例,它为你提供了一个新实例,在这个新实例中,将显示来自nib set值的段控件(或者你在viewDidload
或{{ 1}}方法
<强>解决方案强>
解决方案是将值存储在可以进行检索的位置,并在viewDelegates中设置为
ViewWillAppear
为了存储的目的,有不同的选项
最简单的是第一个,但是如果你已经实现了这个,那么这个领域是一个相当大的选择
快乐编码:)
答案 2 :(得分:1)
您需要在应用中将变量selectedSegment
设为全局变量。您可以在AppDelegate
iPhone, how do I App Delegate variable which can be used like global variables?