2012-02-18 3 views
2

Xcode 4.2가 있고 드롭 다운 메뉴를 만들려고합니다. 드롭 다운 메뉴에서 단어 나 숫자로 드롭 다운하고 싶습니다. 그런 다음 목록에서 항목을 선택하면 다른 페이지의 표에 나타나기를 원합니다. 내 질문은 : 어떻게 쓸 것인가? 감사합니다.UIPickerview 드롭 다운 메뉴의 경우

+0

정말 감사하겠습니다. –

답변

7

먼저 File> New> New File으로 이동하여 프롬프트에 따라 nib 파일로 UIViewController 하위 클래스를 만듭니다.

Select UIViewController subclass

Name your class

이제 펜촉 (MyViewController.xib)을 엽니 다.

MyViewController.xib

당신은 (그것은 중요하지 않습니다) 뷰에 UIPickerView 및 jQuery과 드래그 그러나 당신이 좋아하는을 준비해야한다.

UIPickerView

UITableView

Arrange the interface elements

다음 당신의 UIViewController 하위의 헤더 파일 (MyViewController.h)을 엽니 다.

@interface MyViewController : UIViewController { 

라인의 끝에서

MyViewController.h

<UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource>를 추가하는 것은 그래서 당신은 또한 당신의 tableview 및 선택기 및 참조를 추가해야합니다이

@interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource> 

다음과 같습니다 두 개의 값 배열. 그냥 @end 이상 그런 다음 줄

MyViewController.h should look like this

@property (strong, nonatomic) IBOutlet UITableView* tableView; 
@property (strong, nonatomic) IBOutlet UIPickerView* pickerView; 
@property (strong, nonatomic) NSMutableArray* tableData; 
@property (strong, nonatomic) NSMutableArray* pickerData; 

를 추가 그냥 당신의 펜촉 파일에 가서 이러한 변수에 jQuery과 및 UIPickerView를 연결합니다.

Connect your components

이제 소스 파일 (MyViewController.m)에 당신은 당신에게 참조를 합성 할 필요가있다. 따라서 위임 방법, 그들 중 상당수가있을 것를 추가하는 단지 지금 @implementation MyViewController

MyViewController.m

아래의 파일에 @synthesize tableView, pickerView, tableData, pickerData을 추가 할 수 있지만 그들은 꽤 자기 설명이야.jQuery과 대

위임 방법

- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView; 

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section; 

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 

UIPickerView의 위임 방법

jQuery과 다음

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 

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

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component; 

그들은 소스 파일에 추가되고 표기되어있다 :

- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView { 
    // The number of sections in the UITableView 
    return 1; 
} 

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section { 
    // The number of rows in the UITableView 
    return [tableData count]; 
} 

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    // Set the table cell text to the appropriate value in tableData 
    cell.textLabel.text = [tableData objectAtIndex:indexPath.row]; 

    return cell; 
} 

- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Whatever happens when you select a table view row. 
} 

UIPickerView :

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 
{ 
    // The number of sections in the UIPickerView 
    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; 
{ 
    // The number of rows in the UIPickerView 
    return [pickerData count]; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component; 
{ 
    // The data for each row in the UIPickerView 
    return [pickerData objectAtIndex:row]; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    // whatever you want to happen when a row is selected. 

    // here I am assuming you want to remove from the picker and add to the table on selection 
    [tableData addObject:[pickerData objectAtIndex:row]]; 
    [pickerData removeObjectAtIndex:row]; 

    [tableView reloadData]; 
    [pickerView reloadAllComponents]; 
} 

MyViewController should have these methods.

좋아, 당신이해야 할 마지막 일은 대의원을 설정하고 데이터를 초기화한다. MyViewController- (void)viewDidLoad 방법에서 다음 줄

tableView.delegate = self; 
tableView.dataSource = self; 
pickerView.delegate = self; 
pickerView.dataSource = self; 

tableData = [[NSMutableArray alloc] init]; // table starts empty 
pickerData = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", nil]; // picker starts with values 1, 2, 3, 4, 5 

[tableView reloadData]; 
[pickerView reloadAllComponents]; 

- (void)viewDidLoad should look like this.

당신이 클래스에 대한 사양에서 찾을 수 있지만,이 사람이 지금은 적합해야합니다 몇 가지 더 위임 방법이 있습니다

를 추가합니다.

+0

안녕하세요.이 친구를 위해 null0pointer에게 감사드립니다. 탭으로 된 응용 프로그램에서이 작업을 수행 할 것인지 말 것인지를 선택합니다. :/ –

+0

및 모든 코드를 따르려고했는데 잃어 버렸습니다. Xcode에 익숙하지 않고 모든 것이 어디 있는지 알아낼 수 없으며 단지 나 혼란 스럽습니다. uipickerview 등의 이미지를 업로드하고 어떤 코드가 어디에 있는지 말해 줄 수 있습니다. –

+0

그래서 나는 당신이 물건을 찾을 수 있도록 몇 가지 이미지로 게시물을 업데이 트했습니다. 나는 또한 코드에있는 몇 가지 버그를 수정했습니다. 희망이 도움이됩니다. – null0pointer

관련 문제