UISegmentedControl以编程方式调用selectedSegmentIndex时调用action方法

Ama*_*der 3 cocoa-touch objective-c uisegmentedcontrol ios

我的xib文件中有一个UISegmentedControl.它链接到xib文件中值更改事件的操作方法.

当我以编程方式设置selectedSegmentIndex的值时,将调用action方法

mysegmentedcontrol.selectedSegmentIndex = index
Run Code Online (Sandbox Code Playgroud)

我期待只有当用户通过触摸来更改控件时才会调用操作方法?

这仅适用于UISegmentedControl.

Vij*_*com 6

.h文件

BOOL isProgramaticallyChanged;
Run Code Online (Sandbox Code Playgroud)

.m文件

- (IBAction)segmentAction:(id)sender { // valuechanged connected function

        UISegmentedControl *segControll = (UISegmentedControl *)sender;

    if (segControll.tag == 55) { // while create segment specify tag value to 55 (to set use via IB or Code)

        if (isProgramaticallyChanged == NO) {

            // your valuechanged code here

        }

        else {

            isProgramaticallyChanged = NO; //important

        }

    }

    else if (segControll.tag == 66) { // for many segments

    }

        //...like this do for all segments
}
Run Code Online (Sandbox Code Playgroud)

在.m文件中

无论你把这个代码以编程方式进行更改,都要在此之前做到这一点

if (mysegmentedcontrol.selectedSegmentIndex != index) {

    isProgramaticallyChanged = YES;

    mysegmentedcontrol.selectedSegmentIndex = index;

}
Run Code Online (Sandbox Code Playgroud)