2011-05-30 71 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