2012-12-18 2 views
0

두 개의 UI textFields로 응용 프로그램을 작성하고 있습니다. UI 텍스트 필드를 터치하면 사용자가 UI 텍스트 필드에서 값을 선택하도록 UI 선택기가 표시됩니다. 앱을 테스트하고 하나의 UI TextView를 터치하고 UI 선택기를 스크롤하면 두 개의 UI textField가 값을 변경합니다. 의미, 각 UI 텍스트 필드는 각 UI 선택기에서 영향을받습니다. 왜 그런지 알아? 고맙습니다. C (또는 목표 - C)가 작동하는 방법이 아니다2 하나의보기에서 UI 선택기보기가 각 UI를 방해 함 선택 도구의 텍스트보기

@interface ViewController() <UIPickerViewDataSource, UIPickerViewDelegate> 

@end 

@implementation ViewController 
@synthesize ageTextField; 
@synthesize relationshipTextField; 
@synthesize resultLabel; 
@synthesize calculateButton; 
@synthesize agePickerView; 
@synthesize relationshipPickerView; 
@synthesize ageArray; 
@synthesize relationshipArray; 

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

    //age pickerView 

    self.agePickerView = [[UIPickerView alloc]init]; 

    self.agePickerView.delegate = self; 
    self.agePickerView.dataSource = self; 
    self.agePickerView.showsSelectionIndicator = YES; 
    self.ageTextField.inputView = self.agePickerView; 

    self.ageArray = @[ @"1", @"2", @"3", @"4", @"5", @"5", @"6", @"7", @"8", @"9", @"10",  @"11", @"12" 
, @"13", @"14", @"15", @"16", @"17", @"18", @"19", @"20", @"21", @"22", @"23", @"24",  @"25", @"26", @"27", @"28", @"29", @"30", @"31", @"32", @"33", @"34", @"35", @"36", @"37", @"38", @"39", @"40", @"41", @"42", @"43", @"44", @"45", @"46", @"47", @"48", @"49", @"50", @"51", @"52", @"53", @"54", @"55", @"56", @"57", @"58", @"59", @"60", @"61", @"62", @"63", @"64", @"65", @"66", @"67", @"68", @"69", @"70", @"71", @"72", @"73", @"74", @"75", @"76", @"77", @"78", @"79", @"80", @"81", @"82", @"83", @"84", @"85", @"86", @"87", @"88", @"89", @"90", @"91", @"92", @"93", @"94", @"95", @"96", @"97", @"98", @"99", @"100" ]; 
[self pickerView:self.agePickerView 
didSelectRow:0 
inComponent:0]; 

//relationship pickerView 

self.relationshipPickerView = [[UIPickerView alloc]init]; 

self.relationshipPickerView.delegate = self; 
self.relationshipPickerView.dataSource = self; 
self.relationshipPickerView.showsSelectionIndicator = YES; 
self.relationshipTextField.inputView = self.relationshipPickerView; 

self.relationshipArray = @[ @"1", @"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13", @"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25", @"26",@"27",@"28",@"29",@"30",@"31",@"32",@"33",@"34",@"35",@"36",@"37", @"38",@"39",@"40",@"41",@"42",@"43",@"44",@"45",@"46",@"47",@"48",@"49",@"50", @"51", @"52", @"53", @"54", @"55", @"56", @"57", @"58", @"59", @"60", @"61", @"62", @"63", @"64", @"65", @"66", @"67", @"68", @"69", @"70", @"71", @"72", @"73", @"74", @"75", @"76", @"77", @"78", @"79", @"80", @"81", @"82", @"83", @"84", @"85", @"86", @"87", @"88", @"89", @"90", @"91", @"92", @"93", @"94", @"95", @"96", @"97", @"98", @"99", @"100"]; 

[self pickerView:self.relationshipPickerView 
    didSelectRow:0 
    inComponent:0]; 

} 

-(int) numberOfComponentsInPickerView:(UIPickerView *)pickerView{ 
return 1; 
} 

-(int) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    return [self.ageArray count]; 
    return [self.relationshipArray count]; 
} 

-(NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 
    return [self.ageArray objectAtIndex:row]; 
    return [self.relationshipArray objectAtIndex:row]; 
} 

-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component{ 
    self.ageTextField.text = [self.ageArray objectAtIndex:row]; 
    self.relationshipTextField.text = [self.relationshipArray objectAtIndex:row]; 
} 

- (void)viewDidUnload 
{ 
    [self setAgeTextField:nil]; 
    [self setRelationshipTextField:nil]; 
    [self setResultLabel:nil]; 
    [self setCalculateButton:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

@end 

답변

3
-(int) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    return [self.ageArray count]; 
    return [self.relationshipArray count]; 
} 

. 항상은 첫 번째 행만 실행합니다.

if (pickerView == self.agePickerView) { 
    return [self.ageArray count]; 
} else { 
    return [self.relationshipArray count]; 
} 

그리고 모든 데이터 소스 방법과 동일한 패턴을 적용

당신은UIPickerView가 정보를 요청하는 에 따라 반환 값을 조건화 할 필요가있다.

+0

효과가있었습니다. 나는 그것을 할 수있을 때 정확하게 표시 할 것입니다. 감사! 또한 일단 값이 선택되면 UI 선택기를 닫는 방법은 무엇입니까? – user1681673

+0

@ user1681673'UITextField'의'inputView'로'UIPickerView'를 사용하고 있기 때문에, 단순히 textField에'resignFirstResponder'라고 말할 것입니다. –

+0

피커보기를 닫는 것에 대한 새 스레드를 만들었습니다. 그것을 확인할 수 있습니까? 감사. http://stackoverflow.com/questions/13926830/how-to-dismiss-a-ui-picker-that-is-connected-to-a-ui-text-field – user1681673