0

多くの人が同じ質問をしていることを知っています。私はそれらの多くを試しました。見逃している部分はわかりませんが、まだ機能させることができます。

9*9 の表を表示して変更したいのですが、iPhone の画面のサイズが大きいため、一度に 1 つの列を表示することを考えています。左上のボタンを押すと、UIPickerView がポップアップ表示され、表示する列を選択してから UITextFields をリロードすることができます。

誰か詳細な答えを教えてもらえますか? 私はまだ比較的新しいです(数か月)。前もって感謝します。

9*9テーブル

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
                                                delegate:nil
                                                cancelButtonTitle:nil
                                                destructiveButtonTitle:nil
                                                otherButtonTitles:nil];

[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

CGRect pickerFrame = CGRectMake(0, 40, 0, 0);

UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.dataSource = self;
pickerView.delegate = self;

[actionSheet addSubview:pickerView];


UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray     arrayWithObject:@"Close"]];
closeButton.momentary = YES; 
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet:)   forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[closeButton release];

[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];

[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];

上記は私が見つけたコードです。問題なくポップアップします。ピッカービューに配列を追加する際に問題があります。dismissActionSheet メソッドをどのようにすべきか教えてもらえますか? ありがとうございました。

4

1 に答える 1

0

わかりました。あなたが何を求めているかは理解できたと思います。これがサポートが必要なものでない場合は修正してください...ただし、配列(おそらくNSStrings)をピッカービューに追加するには、- (NSString *)pickerView:titleForRow:forComponent:デリゲートメソッドを使用する必要があります。ここに簡単な例があります:

//Say you have an array of strings you want to present in the pickerview like this
NSArray *arrayOfStrings = [NSArray arrayWithObjects:@"One", @"Two", @"Three", @"Four", nil];

//First we need to say how many rows there will be in the pickerview
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return [arrayOfStrings count];
}

//Do the same for components (columns) in pickerview
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}
//Here we set the actual title/string on the pickerview
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    if(component==0){
        //Grab the nth string from array
        return [arrayOfStrings objectAtIndex:row];
    }
}
//This is called if a user taps a row
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    if(component==0)
    NSLog(@"The User Selected the row titled %@", [arrayOfStrings objectAtIndex:row]);
}

アクションシートと同様に、ユーザーがアクションシートのボタンをクリックしたときに処理するためのデリゲートメソッドを追加する必要があります

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    if(buttonIndex==0){
        NSLog(@"First Button Clicked");
    } else if( buttonIndex == 1){
        NSLog(@"Second Button Clicked");
    }
}
于 2012-10-30T17:22:32.017 に答える