0

インデックス0のsegmentControllerのクリックを「自動化」したいと考えています。

私の tabBar ベースのアプリには、ViewDidAppear メソッドのタブに複数の segmentControllers があり、最初のセグメント化されたコントローラーを自動的に「クリック」したいと考えています。

if (segmentController.selectedSegmentIndex == 0) {
    //stuff here
}

if (segmentController.selectedSegmentIndex == 1) {
    //stuff here
}

私がこれを達成する方法を知っている人はいますか?ありがとうございました!

4

2 に答える 2

1

プログラムで作成している場合は、次のように遅延ロードできます。

@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:

乾杯!

于 2012-12-23T03:22:12.517 に答える
1

(または) メソッドでselectedSegmentIndexプロパティを設定しUISegmentedControlます。viewDidAppearviewDidLoad

self.segmentedController.selectedSegemntIndex = 1;

UISegmentedControl リファレンス

于 2012-12-23T03:01:58.973 に答える