プログラムで作成している場合は、次のように遅延ロードできます。
@interface ExampleViewController : UIViewController
@property (nonatomic, strong) UISegmentedControl *segmentedControl;
- (void)segmentedControlClicked:(UISegmentedControl *)segmentedControl;
@end
@implementation ExampleViewController
- (UISegmentedControl *)segmentedControl
{
if (!_segmentedControl)
{
NSArray *items = @[@"First", @"Second", @"Third"];
_segmentedControl = [[UISegmentedControl alloc] initWithItems:items];
[_segmentedControl addTarget:self
action:@selector(segmentedControlClicked:)
forControlEvents:UIControlEventValueChanged];
[_segmentedControl setSelectedSegmentIndex:0]; // Set Default selection
CGRect frame = _segmentedControl.frame;
frame.origin = CGPointMake(0.0f, 0.0f); // Move to wherever you need it
[self.view addSubview:_segmentedControl];
}
return _segmentedControl;
}
- (void)segmentedControlClicked:(UISegmentedControl *)segmentedControl
{
// Whatever your code is goes here...
}
@end
メソッドを最初にも呼び出す必要がある場合は、viewDidLoad:
メソッド内で次のように呼び出すことができます。
- (void)viewDidLoad
{
[self.segmentedControl setSelectedSegmentIndex:0]; // Set desired default index (optional if set in lazy load as shown above)
[self segmentedControlClicked:self.segmentedControl];
}
したがって、これにより、目的のデフォルト インデックスのクリックがシミュレートされます。
ビューが前面に来るたびにこのメソッドが呼び出されるため、上記を慎重に配置してくださいviewDidAppear:
(本当にしたい場合は可能です) 。ビュー コントローラのメソッドが呼び出されます)。viewDidAppear:
乾杯!