정말이 중 하나에 가까워 ...이 목적을 위해 두 개의 텍스트 상자가 있습니다. 눌렀을 때 UI 픽커가 호출됩니다.피커보기에서 하나 이상의 배열을 얻는 방법
텍스트 상자 하나를 리턴 두 리턴 값 1,2,3,4-
입력란 값들 A, B, C, D
문제가 있음 피커는 텍스트 상자 두을 위해 제시 될 때 텍스트 상자 2에서 적절한 행을 선택하지만 텍스트 상자 1의 값을 표시합니다. 누군가가 내 코드를 검사하고 어디서 오류가 발생했는지 말해 줄 수 있겠습니까? 고마워요.
.H
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate,UITextFieldDelegate>
{
//decalre picker
UIPickerView *select;
//declare NSArrray
NSArray *arrStatus;
NSArray *arrStatus2;
}
@property (strong, nonatomic) IBOutlet UITextField *text1;
- (IBAction)Value:(id)sender;
@property (strong, nonatomic) IBOutlet UITextField *text2;
@end
하는 .m
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
@synthesize text2;
@synthesize text1;
- (void)viewDidLoad
{
select = [[UIPickerView alloc] initWithFrame:CGRectZero];
select.delegate = self;
select.dataSource = self;
[select setShowsSelectionIndicator:YES];
text1.inputView = select;
text2.inputView = select;
arrStatus = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",nil];
arrStatus2 = [[NSArray alloc] initWithObjects:@"A",@"B",@"C",@"D",nil];
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
//One column
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//set number of rows
return arrStatus.count;
return arrStatus2.count;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
//set item per row
return [arrStatus objectAtIndex:row];
return [arrStatus2 objectAtIndex:row];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[self setText1:nil];
[self setText2:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (IBAction)Value:(id)sender {
NSInteger selectedRow = [select selectedRowInComponent:0];
if([text1 isFirstResponder])
text1.text = [arrStatus objectAtIndex: selectedRow];
[text1 resignFirstResponder];
if ([text2 isFirstResponder])
text2.text = [arrStatus2 objectAtIndex: selectedRow];
[text2 resignFirstResponder];
}
@end
그래서 1 개 콜 럼, 2 개 배열, 2 개 텍스트 상자, 1 개 선택기보기를 얻으려고 노력 메신저를 요약합니다. 필자가 다른 피커보기를 만들려고했지만 그 중 하나도 작동하지 않았습니다.
데이터를 색인하기 위해'NSDictionary'를 사용하려고하면, 반환 할 때''1 ''과''A "'를 모두 보낼 수 있습니다. – NSPunk
Ive가 모든 사람의 의견을 보드에 기록하고 코드를 조정했습니다. 그러나 먼저 다른 텍스트 상자가 다른 NSArray에서 개체를 선택하는 경우에도 다른 텍스트 상자에 대해 표시됩니다 먼저 표시됩니다. 예를 들자면 http://cl.ly/1v2B0Q3I3D1H – JSA986
나는 그것을 점검 할 것이다. – NSPunk