2011-05-30 70 views
0

我開發iPad應用,我有一個按鈕,我想,當點擊按鈕,一個子視圖顯示包含日期選擇器,完成取消的UIDatePicker問題

問題是

  1. 的datepicked不會出現
  2. 當單擊取消應用程序崩潰無法識別的選擇發送到實例

我用下面的代碼

-(IBAction)BirthDatePicker:(id)sender{ 
    if(! ISPicker) { 

     if(self.interfaceOrientation == UIInterfaceOrientationPortrait || self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) 
     { 
      pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0,700, 768, 216)]; 
      mytab = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 656, 768, 44)]; 


     } 
     else { 
      pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0,439, 1024, 216)]; 
      mytab = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 395, 1024, 44)]; 


     } 


     pickerView.alpha=0.0; 
     mytab.alpha=0.0; 

     //pickerView.showsSelectionIndicator = YES; 
     [self.view addSubview:pickerView]; 
     [self.view bringSubviewToFront:pickerView]; 

     mytab.tintColor=[UIColor blackColor]; 

     UIBarButtonItem * bt1=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(_Done)]; 
     UIBarButtonItem * bt2=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(_cancel)]; 
     UIBarButtonItem * flx=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 

     NSArray *arr=[[NSArray alloc] initWithObjects:flx,bt1,bt2,nil]; 
     [mytab setItems:arr]; 
     [self.view addSubview:mytab]; 

     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     pickerView.alpha=1.0; 
     mytab.alpha=1.0; 
     [UIView commitAnimations]; 

     [pickerView release]; 
     [mytab release]; 
     [bt1 release]; 
     [flx release]; 
     [arr release]; 

     ISPicker = true ; 
    } 
} 

-(void)_Done{ 

    ISPicker = false ; 

    NSDate * selected = [pickerView date]; 
    NSString * date = [selected description]; 
    DateLabel.text = date; 

} 

-(void)_Cancel{ 

    ISPicker = false ; 
    //// Release the view 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.3]; 
    pickerView.alpha=0.0; 
    mytab.alpha=0.0; 

    [UIView commitAnimations]; 
} 

任何建議,請

+1

就第二個問題而言,您需要使用'action:@selector(_Cancel)'而不是'action:@selector(_cancel)'。 – 2011-05-30 09:36:42

+0

是的,這是一個敏感的案例謝謝,你有任何關於第一個問題的建議 – AMH 2011-05-30 09:48:43

回答

0

錯在這線

pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0,700, 768, 216)]; 

應該

pickerView = [[UIDatePicker alloc]initWithFrame:CGRectMake(0,700, 768, 216)]; 
0

你不應該releasse您pickerViewmyTab,直到你用它做,從去除釋放 - (IBAction)BirthDatePicker:(id)sender並移動到-(void)_Done-(void)_Cancel

+0

相同的錯誤***終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因:' - [QueryRetrieve _cancel]:無法識別的選擇器發送到實例0xe24500' – AMH 2011-05-30 09:40:04