이번에는 iOS 개발할 때 Segmented Control을 사용하는 간단한 예제를 작성해보려구요.


빠르게 시작!!!!


1. 프로젝트 생성


저는 프로젝트 생성 할 때 Single View Application을 주로 선택해서 시작해요.

간단한 부분이니깐 그림으로 때우죠.


2. 스토리보드 작업


일단 프로젝트를 만들고, Main.storyboard에 들어가보시면 빈 화면이 나오겠죠? :)

세그먼트를 테스트하기 위해서 View에 segmented control과 label 각 1개 씩 뷰로 옮겨줍니다.

그림은 클릭해서 보시길 추천드려요 :)

그럼 이제 소스코드와 연결하기 위해서 Assistant editor를 선택하고 아래 그림과 같이 연결해줍니다.

방법은 소스코드와 연결하기 위한 오브젝트를 선택하고, Ctrl키를 누른 상태에서 마우스 왼쪽 버튼을 클릭해서 소스에 끌어다 마우스 버튼을 떼면 되죠?

저는 각 오브젝트의 이름을 testSegmented와 testLabel로 설정했습니다. 여러분은 적당한 것으로 하셔도 되요.


3. 소스코드 작성하기


일단 소스코드를 보면


#import "TESTViewController.h"


@interface TESTViewController ()


@end


@implementation TESTViewController


@synthesize testLabel;

@synthesize testSegmented;


- (void)viewDidLoad

{

    [super viewDidLoad];

    [testSegmented addTarget:self action:@selector(segmentedChange:) forControlEvents:UIControlEventValueChanged];

    

    testLabel.text = @"First";

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

}


-(void)segmentedChange: (UISegmentedControl *)sender

{

    if(sender.selectedSegmentIndex == 0)

    {

        testLabel.text = @"First";

    }

    else if(sender.selectedSegmentIndex == 1)

    {

        testLabel.text = @"Second";

    }

}


@end


빨간색 부분만 잘 보시면 됩니다. 


[testSegmented addTarget:self action:@selector(segmentedChange:) forControlEvents:UIControlEventValueChanged];

testSegmented (이건 segmented control 이죠) 의 값이 변경되면 segmentedChange 함수에서 처리하라는 문장입니다.


testLabel.text = @"First";

기본으로 First가 선택되어 있으니깐 Label에 First라고 입력해주는 것이구요.


-(void)segmentedChange: (UISegmentedControl *)sender

{

    if(sender.selectedSegmentIndex == 0)

    {

        testLabel.text = @"First";

    }

    else if(sender.selectedSegmentIndex == 1)

    {

        testLabel.text = @"Second";

    }

}


segmented control에서 값이 변경되면 처리되는 함수인데요.

간단하게 segmented control의 index 값을 가져와서 0이면 첫 번째 것이니깐 Label에 First로 해주고요.

index 값이 1이면 Label에 Second로 설정해주는 것이구요.


4. 테스트


테스트하시면 이렇게 되겠죠?

사실 이번 포스팅과 유사하게 하시면 여러가지 오브젝트를 컨트롤 하실 수 있겠죠?? 

    


+ Recent posts