2014-10-20 2 views
0

사용자가 특정 옵션을 선택할 때 선택기보기에서 레이블을 채우고 싶습니다. 예 : 구성 요소 1 선택 사항은 레이블 1에 표시되고 구성 요소 2 선택 사항은 레이블 2에 표시되고 구성 요소 3 선택 사항은 레이블 3에 표시됩니다.선택기보기 선택 항목 레이블 채우기

일반 선택기에는 아무런 문제가 없지만 선택기 구성 요소는 다음과 같이 변경됩니다. 이전 구성 요소가 어떤 선택인지.

예 : 컴포넌트의 구성 요소 1은 데이터에

첫번째 선택 2

성분 1

초 선택 차례로 성분의 다른 데이터를 표시하는 구성 요소 (2)

다른 데이터를 표시하는 3

현재 실행 중이 아니며 제대로 작동하지 않아 내가 잘못하고있는 것을 알지 못합니다. 나는 그것이 "didSelectRow"섹션이라고 생각하고 있지만 정확히 확신 할 수는 없습니다.

.H

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate> 

@property (weak, nonatomic) IBOutlet UIPickerView *picker1; 
@property (weak, nonatomic) IBOutlet UILabel *label1; 
@property (weak, nonatomic) IBOutlet UILabel *label2; 
@property (weak, nonatomic) IBOutlet UILabel *label3; 

@end 

하는 .m

#import "ViewController.h" 

@interface ViewController() 
{ 
    NSArray*overalltype; 
    NSArray*healthtype; 
    NSArray*midwifetype; 
    NSArray*doctortype; 
    NSArray*otherhealthtype; 
    NSArray*visitorstype; 
    NSArray*othertype; 
    NSArray*onlinetype; 
    NSArray*volunteertype; 

    NSInteger selectedOptionFromColumn1; 
    NSInteger selectedOptionFromColumn2; 
} 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    overalltype =[[NSArray alloc]initWithObjects:@"Health Professional", @"HouseKeeping",@"Visitors", @"Other",nil]; 
    healthtype =[[NSArray alloc]initWithObjects:@"Midwife", @"Nurse",@"Doctor", @"Other Health Professional" ,nil]; 
    midwifetype =[[NSArray alloc]initWithObjects:@"Known Midwife", @"New Midwife", nil]; 
    doctortype =[[NSArray alloc]initWithObjects:@"Snr Dr", @"Jnr Dr", @"Baby Dr", @"GP", nil]; 
    otherhealthtype =[[NSArray alloc]initWithObjects:@"Lactation Consultant", @"Student", @"Hearing Technician", @"Bloody Collector", @"Social Worker", @"Mental Health", @"Physiotherapist", nil]; 
    visitorstype =[[NSArray alloc]initWithObjects:@"Partner", @"Relatives", @"Friends", @"Other Woman's Visitors", nil]; 
    othertype =[[NSArray alloc]initWithObjects:@"Online Support", @"Volunteer", @"Church Group", @"Wardsperson", nil]; 
    onlinetype =[[NSArray alloc]initWithObjects:@"Chatroom", @"Internet Search", nil]; 
    volunteertype =[[NSArray alloc]initWithObjects:@"ABA", @"Hospital Volunteer", @"Church Group", nil]; 
} 

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 3; 
} 

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component 
{ 
    switch (component) { 
     case 0: 
      return overalltype.count; 
      break; 

     case 1: 
      if (selectedOptionFromColumn1 == 0) { 
       return healthtype.count; 
      } 
      else if (selectedOptionFromColumn1 == 2){ 
       return visitorstype.count; 
      } 
      else if (selectedOptionFromColumn1 == 3){ 
       return othertype.count; 
      } 
      break; 

     case 2: 
      if (selectedOptionFromColumn1 == 0 && selectedOptionFromColumn2 ==0) { 
       return midwifetype.count; 
      } 
      else if (selectedOptionFromColumn1 == 0 && selectedOptionFromColumn2 ==2) { 
       return doctortype.count; 
      } 
      else if (selectedOptionFromColumn1 == 0 && selectedOptionFromColumn2 ==3) { 
       return otherhealthtype.count; 
      } 
      else if (selectedOptionFromColumn1 == 3 && selectedOptionFromColumn2 ==0) { 
       return onlinetype.count; 
      } 
      else if (selectedOptionFromColumn1 == 3 && selectedOptionFromColumn2 ==1) { 
       return volunteertype.count; 
      } 
      break; 

     default: 
      break; 
    } 
    return 0; 
} 

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 
    switch (component) { 
     case 0: 
      return [overalltype objectAtIndex:row]; 
      break; 

     case 1: 
      if (selectedOptionFromColumn1 == 0) { 
       return [healthtype objectAtIndex:row]; 
      } 
      else if (selectedOptionFromColumn1 == 2) { 
       return [visitorstype objectAtIndex:row]; 
      } 
      else if (selectedOptionFromColumn1 ==3){ 
       return [othertype objectAtIndex:row]; 
      } 
      break; 

    case 2: 
      if (selectedOptionFromColumn1 == 0 && selectedOptionFromColumn2 == 0) { 
       return [midwifetype objectAtIndex:row]; 
      } 
      else if (selectedOptionFromColumn1 == 0 && selectedOptionFromColumn2 == 2) { 
       return [doctortype objectAtIndex:row]; 
      } 
      else if (selectedOptionFromColumn1 == 0 && selectedOptionFromColumn2 == 3) { 
       return [otherhealthtype objectAtIndex:row]; 
      } 
      else if (selectedOptionFromColumn1 == 3 && selectedOptionFromColumn2 == 0) { 
       return [onlinetype objectAtIndex:row]; 
      } 

      else if (selectedOptionFromColumn1 == 3 && selectedOptionFromColumn2 == 1) { 
       return [volunteertype objectAtIndex:row]; 
      } 
      break; 

     default: 
      break; 
    } 
    return 0; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    switch (component) { 

     case 0: 
      selectedOptionFromColumn1=[pickerView selectedRowInComponent:0]; 
      [pickerView reloadComponent:1]; 
      _label1.text = [overalltype objectAtIndex: [pickerView selectedRowInComponent:0]]; 

     case 2: 
      selectedOptionFromColumn2=[pickerView selectedRowInComponent:1]; 
      [pickerView reloadComponent:2]; 
      if(selectedOptionFromColumn1 == 0){ 
       _label2.text = [healthtype objectAtIndex: [pickerView selectedRowInComponent:1]]; 
      } 

      else if(selectedOptionFromColumn1 ==2){ 
       _label2.text = [visitorstype objectAtIndex: [pickerView selectedRowInComponent:1]]; 
      } 
      else if(selectedOptionFromColumn1 ==3){ 
       _label2.text = [otherhealthtype objectAtIndex: [pickerView selectedRowInComponent:1]]; 
      } 

     case 3: 
      if (selectedOptionFromColumn1 ==0 && selectedOptionFromColumn2 == 0){ 
      _label3.text = [midwifetype objectAtIndex: [pickerView selectedRowInComponent:2]]; 
      } 
      else if(selectedOptionFromColumn1 ==0 && selectedOptionFromColumn2 ==2){ 
      _label3.text = [doctortype objectAtIndex: [pickerView selectedRowInComponent:2]]; 
      } 
      else if(selectedOptionFromColumn1 ==0 && selectedOptionFromColumn2 == 3){ 
       _label3.text = [otherhealthtype objectAtIndex: [pickerView selectedRowInComponent:2]]; 
      } 

      else if(selectedOptionFromColumn1 ==3 && selectedOptionFromColumn2 == 0){ 
       _label3.text = [onlinetype objectAtIndex: [pickerView selectedRowInComponent:2]]; 
      } 
      else if(selectedOptionFromColumn1 ==3 && selectedOptionFromColumn2 == 1){ 
       _label3.text = [volunteertype objectAtIndex: [pickerView selectedRowInComponent:2]]; 
      } 
    } 
} 

- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning]; 
} 

@end 
+0

어떤 오류를 읽을

또한 현대 오브젝티브 C, https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html 사용을 고려할 수 있는가? 누구든지 도움을 얻을 수있는 자세한 정보를 제공해야합니다. – rmaddy

+0

앞으로도 가능한 한 코드를 형식화 해보십시오. 나는 이번에 당신을 위해 그것을 해냈습니다. 당신의 질문을 이해하는 데 많은 도움이됩니다. – TMob

답변

0

당신은 당신의 didSelectRow 방법의 각 case 문의 일환으로 break 문을 누락되었습니다. 쉽게 그 많은