1

私はインターネットとこのサイトを何時間も検索しました - 私は多くの同様の質問を見つけ、人々が行った提案を試しましたが、私が使用しているコードで何も動作しないようです.

何が起こっているかは次のとおりです。

日付を表示したい 2 つのテキスト フィールド (dateOpened と dateClosed) があります。各テキスト フィールドをクリックすると、日付ピッカーが表示されます (その部分を機能させることができました)。ただし、dateClosed テキストフィールドに日付を表​​示する際に問題が発生しています。

dateOpened の場合 - テキストフィールドをクリックすると、日付ピッカーが表示され、日付を選択すると、そのテキストフィールドに表示されます。それはうまくいきます!

問題:

dateClosedの場合-テキストフィールドをクリックすると、datepickerが表示され(うまく機能します)、日付を選択しますが、dateClosedではなく、dateOpenedテキストフィールドに表示されます。

dateClosed テキストフィールドに日付を表​​示する方法についての提案をいただければ幸いです。ありがとうございました!!!:)

.h ファイル:

UIActionSheet *dateSheet;

@property (nonatomic, strong)NSDate *openedDate;
@property (nonatomic, strong)NSDate *closedDate;

@property (strong, nonatomic) IBOutlet UITextField *dateOpened;
@property (strong, nonatomic) IBOutlet UITextField *dateClosed;

-(IBAction)dismissKeyboard:(id)sender;

-(void)setOpened;
-(void)setDateField;
-(void)cancelDateSet;

.m ファイル:

-(void)setOpened { 
    dateSheet = [[UIActionSheet alloc]initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
[dateSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 44, 0, 0);
    UIDatePicker *dateOpenedPicker = [[UIDatePicker alloc]initWithFrame:pickerFrame];
    [dateOpenedPicker setDatePickerMode:UIDatePickerModeDate];
    [dateSheet addSubview:dateOpenedPicker];
    UIToolbar *controlToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, dateSheet.bounds.size.width, 44)];
    [controlToolBar setBarStyle:UIBarStyleBlack];
    [controlToolBar sizeToFit];
   UIBarButtonItem *spacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
   UIBarButtonItem *setButton = [[UIBarButtonItem alloc]initWithTitle:@"Set Date" style:UIBarButtonItemStyleDone target:self action:@selector(dismissDateSet)];
   UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelDateSet)];
   [controlToolBar setItems:[NSArray arrayWithObjects:spacer, cancelButton, setButton, nil]animated:NO];
   [dateSheet addSubview:controlToolBar];
   [dateSheet showFromTabBar:self.tabBarController.tabBar];
   [dateSheet setBounds:CGRectMake(0, 0, 320, 485)];    
}

-(void)cancelDateSet {
   [dateSheet dismissWithClickedButtonIndex:0 animated:YES];
 }

-(void)setDateField {

    NSArray *datesList = [dateSheet subviews];
    for (UIView *subView in datesList)
    {
        if ([subView isKindOfClass:[UIDatePicker class]]) {
        self.openedDate = [(UIDatePicker *)subView date];
        }
    }

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"MM/dd/yyyy"];

    //will display date in dateOpened text field
    [dateOpened setText:[dateFormatter stringFromDate:self.openedDate]];

    //date to display in dateClosed text field - Does not work
    [dateClosed setText:[dateFormatter stringFromDate:self.closedDate]];

    [dateSheet dismissWithClickedButtonIndex:0 animated:YES];
}

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
   [self setOpened];
   return NO;
}

-(IBAction)dismissKeyboard:(id)sender {
    [sender resignFirstResponder];
}
4

1 に答える 1

1

3ステップ

  • 入力するテキスト フィールドを特定 [開始日または終了日]、フラグを使用 [デリゲートを使用]
  • 日付ピッカーを表示し、ユーザーが収集した日付を取得します
  • 識別された最初のメソッドに従って、結果[フラグ] 開始日と終了日としてそれに応じてさらに使用するために日付値を保存します[ループの場合]

ここで、メソッドは値の取得を実装していませんself.closedDate

于 2012-10-05T22:15:13.870 に答える