2011-08-31 4 views
1

do not have XIB for that 때문에 문법적으로 탐색 항목에 UISegmentedControl을 구현해야합니다.iphone : 프로그래밍 방식으로 탐색 항목에 UISegmentedCotrol을 설정하는 방법?

탐색 항목 이미 title, left bar button 있고, right bar button 내가 문법적으로 프로 내가 그 컨트롤에 이벤트를 제공 할 수있는 방법 left bar button하고 또한 title

사이를 넣어 수 있습니까?

나는 아래의 코드를 사용했습니다 :

segImport = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Own",@"Imported",nil]]; 
       [segImport setFrame:CGRectMake(80, 0, 200, 30)]; 
    [segImport setSegmentedControlStyle:UISegmentedControlStyleBar]; 
+1

더 당신은 당신이 할 수있는 180cm 정도 leftbar 버튼과 제목 사이의 세그먼트 제어 할 수있다 넣지 중 또 하나 개의 세그먼트로 세그먼트 컨트롤의 왼쪽 막대 버튼을 추가 할 수 없습니다 왼쪽 막대 버튼 항목에 해당 세그먼트 컨트롤을 추가하십시오. – Gypsa

+0

@Gypsa : 정말 가능합니까? – viral

+1

예 가능합니다. – Gypsa

답변

3

@Heena : 안녕하세요 ..

당신은 당신이 평소대로 UISegmented 제어를 준비해야합니다.

그런 다음 사용해야합니다

UIBarButtonItem * SEG = [[UIBarButtonItem ALLOC] initWithCustomView : segmentControlObject]

self.navigationItem.rightBarButtonItem = seg;

희망이 도움이됩니다.

편집 :

지금까지 당신이 leftbarbutton 제목 사이에 배치 할 수 있는지 여부를 질문한다. 그러면 대답은 '아니오'입니다. 그렇게 할 수는 없습니다.

하지만 작동 방법을 원한다면/해결하려면 저에게 연락하십시오.

+0

맞습니다. 나는 그것을 그렇게 할 수 없다. 그래서 나는 그것을 내비게이션 바 아래에 둔다. – Heena

+0

Ok thats fine :) –

0

탐색 바는 조금 힘들 수 있습니다. 최대 2 개까지 도달했기 때문에 다른 항목을 하위 뷰로 추가 할 수는 없다고 생각하므로 탐색 막대 위에 UISegmentedControl을 배치하면됩니다. 분할 컨트롤의 선택된 세그먼트의 변화,이 스위치 문을 사용할 때 검출로 :

switch (self.segementControl.selectedSegmentIndex) { 

    case 0: { 

     //the first segment is selected 
     break; 

    } case 1: { 

     //the second segment is selected 
     break; 

    } case 2: { 

     //the third segment is selected 
     break; 

    } default: { 

     break; 

    } 
+0

이 코드를 함수에 넣어야합니까? 그러면 어떻게 제어가이 함수를 호출해야한다는 것을 알 수 있을까요? – Heena

+0

세그먼트 화 된 컨트롤의 값이 변경되면이 코드를 호출해야합니다. –

5

이 탐색 표시 줄에 많은 공간이 아니라,이 같은 탐색 모음의 제목보기로 분할 컨트롤을 추가 할 수 있습니다 :

[[self navigationItem] setTitleView:segImport]; 

이것을 수행하는 방법에 대한 전체 자습서는 article을 확인하십시오.

+0

하지만 내 탐색 모음의 제목이 이미 있습니다. – Heena

+0

다른 옵션은 화면 하단의 탐색 모음이나 탐색 모음 아래에있는 구분 된 컨트롤을 넣는 것을 포함합니다. –

+0

네비게이션 바 아래에 하나의 옵션이 될 수 있지만 내 것은 UITableViewController 클래스 – Heena

1

다음 코드는 당신을 도울 수,

UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 150, 40)]; 
UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:@[@"One", @"Two", @"Three"]]; 
segment.frame = CGRectMake(0, 0, 150, 40); 
[segment addTarget:self action:@selector(onSegmentChanged:) forControlEvents:UIControlEventValueChanged]; 
[customView addSubview:segment]; 
self.navigationItem.titleView = customView; 

- (void)onSegmentChanged:(id)sender 
{ 
    UISegmentedControl *segment = (UISegmentedControl *)sender; 
    if (segment.selectedSegmentIndex == 0) { 

    } 
    else if (segment.selectedSegmentIndex == 1) { 

    } 
    else if (segment.selectedSegmentIndex == 2) { 

    } 

} 
관련 문제