UISegmentedControl에 대한 클릭 이벤트 정의
UISegmentedControl
내 응용 프로그램에 추가했습니다 . 정상 상태에서는 버튼이 선택되지 않습니다. 첫 번째 세그먼트가 선택되면 버튼 클릭 이벤트를 구현하고 다른 버튼을 클릭하면 다른 이벤트를 구현하고 싶습니다.
귀하의 질문을 올바르게 이해했다면 UISegmentControl의 참조 문서에 제공된 예제와 똑같이 상수에 대한 대상 작업 메서드 ( 의 부모 클래스 UIControl
가 지원됨)를 구현하면됩니다 .UISegmentedControl
UIControlEventValueChanged
즉
[segmentedControl addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventValueChanged];
다음 서명이있는 메시지에 사용됩니다.
- (void)action:(id)sender
또는
[segmentedControl addTarget:self
action:@selector(action:forEvent:)
forControlEvents:UIControlEventValueChanged];
...에 대한
- (void)action:(id)sender forEvent:(UIEvent *)event
또는
[segmentedControl addTarget:self
action:@selector(action)
forControlEvents:UIControlEventValueChanged];
가장 간단한 방법 :
- (void)action
UIKit에서 사용되는 표준 유형의 타겟 액션 선택기입니다.
이 시도:
- (IBAction)segmentSwitch:(UISegmentedControl *)sender {
NSInteger selectedSegment = sender.selectedSegmentIndex;
if (selectedSegment == 0) {
}
else{
}
}
이걸로 해봐,
UISegmentedControl * travelModeSegment = [[UISegmentedControl alloc] initWithItems:
[NSArray arrayWithObjects:NSLocalizedString(@"Driving", nil), NSLocalizedString(@"Walking", nil), nil]];
[travelModeSegment setFrame:CGRectMake(9.0f, 0.0f, 302.0f, 45.0f)];
[cell addSubview:travelModeSegment];
[travelModeSegment release];
그런 다음 작업을 작성하고
if (travelModeSegment.selectedSegmentIndex == 0) {
//write here your action when first item selected
} else {
//write here your action when second item selected
}
도움이 되길 바랍니다
신속한 업데이트의 간단한 버전
func loadControl(){
self.yourSegmentedControl.addTarget(self, action: #selector(segmentSelected(sender:)), forControlEvents: .valueChanged)
}
func segmentSelected(sender: UISegmentedControl)
{
let index = sender.selectedSegmentIndex
// Do what you want
}
선택기가 메소드와 정확히 일치해야하지만 실제 매개 변수는 없어야한다는 점은 주목할 가치가 있습니다.
@selector(action)
=> -(void) action { ..code.. }
@selector(action:)
=> -(void) action:(id)sender { ..code.. }
@selector(action:forEvent:)
=> -(void) action:(id)sender forEvent:(UIEvent *)event { ..code.. }
이것은 가장 오랫동안 나를 혼란스럽게했으며 이전 답변에서 명확하지 않습니다.
SWIFT의 경우 다음을 사용하십시오.
segmentedControl.addTarget( self, action: "segmentSelected:", forControlEvents: UIControlEvents.ValueChanged )
다음과 같은 메소드를 구현하십시오.
func segmentSelected(sender: UISegmentedControl)
{
println("selected index: \(sender.selectedSegmentIndex)")
}
선택한 세그먼트가 선택 될 때 특정 조치를 호출하려면 UISegmentedControl을 확장하십시오.
class CustomSegmentedControl : UISegmentedControl
{
override init()
{
super.init()
}
override init(frame:CGRect)
{
super.init(frame:frame)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func valueChanged(index:Int)
{
// ACTION GOES HERE
}
}
다음과 같이 "segmentSelected"에서 "valueChanged"를 호출합니다.
func segmentSelected(sender: CustomSegmentedControl)
{
println("selected index: \(sender.selectedSegmentIndex)")
sender.valueChanged(sender.selectedSegmentIndex)
}
이와 같이 간단합니다.이 액션이 작동하도록하려면 스토리 보드를 사용하여 뷰 컨트롤러에 액션을 만들어야합니다.
- (IBAction)searchSegmentedControl:(UISegmentedControl *)sender
{
switch (sender.selectedSegmentIndex) {
case 0:
NSLog(@"First was selected");
break;
case 1:
NSLog(@"Second was selected");
break;
case 2:
NSLog(@"Third was selected");
break;
default:
break;
}
}
IB의 핸들러를 값 변경 이벤트에 연결할 수 있습니다. UIControlEventValueChanged
또는 코드에서 할 수 있습니다.
[segmentedControl addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventValueChanged];
참고 URL : https://stackoverflow.com/questions/3049169/define-click-event-for-uisegmentedcontrol
'programing tip' 카테고리의 다른 글
눈금을 날짜 형식으로 어떻게 변환 할 수 있습니까? (0) | 2020.11.29 |
---|---|
사용자 지정 글꼴로 Spannable 개체 글꼴을 설정하는 방법 (0) | 2020.11.29 |
런타임에 node.js 버전 가져 오기 (0) | 2020.11.28 |
eval (parse (…))의 위험은 구체적으로 무엇입니까? (0) | 2020.11.28 |
ValueError : int ()에 대한 잘못된 리터럴 (0) | 2020.11.28 |