2011-02-17 7 views
3

UITableViewControllerの詳細ビューであるUITableViewControllerがあります。UIDatePickerとUITableView

この表には、「日付」というラベルの付いたセルがあります。 Appleの「DateCell」の例(http://developer.apple.com/library/ios/#samplecode/DateCell/Introduction/Intro.html)を使用して、セルに触れるときにUIDatePickerを追加しようとしました。

私はすべてのことを、例のやり方とまったく同じです。右のセルが押されたときにのみ実行

if(indexPath.section == 1 && indexPath.row == 0) 
{ 
    //Date picker stuff 
} 

これは、それを確保することである:私が変更しただけの事は、私はこの中にdidSelectRowAtIndexPathコードをフェンスということです。

私の人生にとって、私はそれを働かせることはできません。クリックすると、青色(選択済み)に変わります。繰り返しクリックすると何も起こりません。

UITableViewの一番下にスクロールすると、クリックすると白い四角形がアニメーション表示されます。最終的に繰り返しクリックすると、テーブルビュー全体がカバーされます。

私にはあまり意味がありません。どうしたらいいですか?

コードを追加したい場合は、それを提供できますが、DateCellコードとほぼ同じです。私はほとんどの部分をコピー/ペーストしました。事前に

おかげで、

クリフ

+0

ノーバディ。したがって、// Date picker stuffを実際のコードに置き換えてください。 –

答えて

6

は、IBOutlet参照を作成し、IBオブジェクトに接続し、それはあなたが使用しているものだ場合は、IBでピッカーオブジェクトを持っていることを確認してください。私はpickerViewをIBに隠して設定し、必要に応じて表示させます。それ以外の場合は、必要に応じてインスタンス化することができます。

あなたのdidSelectRowAtIndexPathでは、以下のコードを試して、何が起こるかを見ることができます。あなたはピッカービューの選択の変更に応じて、あなたのセルのラベルを更新したい場合は、あなたのpickerView:didSelectRow:メソッドを実装する必要があります。その後

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (**your cell/section selection logic here**) { 
     [self.view endEditing:YES]; // resign firstResponder if you have any text fields so the keyboard doesn't get in the way 
     [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; // Scroll your row to the top so the user can actually see the row when interacting with the pickerView 

     // Pickerview setup 
     [self.typePicker setCenter:CGPointMake(150, 500)]; // place the pickerView outside the screen boundaries 
     [self.typePicker setHidden:NO]; // set it to visible and then animate it to slide up 
     [UIView beginAnimations:@"slideIn" context:nil]; 
     [self.typePicker setCenter:CGPointMake(150, 250)]; 
     [UIView commitAnimations];   
    } 
} 

...

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    // Your code to get the current table view cell and update it with the data from your pickerView 
} 

はあなたのViewControllerが代理人として宣言されていることを確認しますテーブルビュー<UITableViewDelegate>とpickerViewの場合 '

これはあなたに良いスタートを与えるはずです。ご質問などがある場合は、私に教えてください

乾杯、 Rogメールだけで、あなたの質問に答える、いなくても私にはdateCell例をダウンロードします

+0

これは、私が夜遅くStackOverflowに投稿すべきではない理由です。問題が発生した理由は、UIDatePickerを自分のウィンドウに追加してコンセントを接続したことがないからです。これは私の最初のiPhoneアプリで、これまでほとんどのオブジェクトをコードでインスタンス化しました。私はこのために同じことをするだけです。あなたのコメントがこの実現を引き起こしたので、私はあなたに信用を与えています。あなたの時間を無駄にして申し訳ありません。 – clifgriffin