簡體   English   中英

不兼容的指針類型從“ UIPopoverController *”分配給“ UIDatePicker *”

[英]Incompatible pointer types assigning to 'UIDatePicker *' from 'UIPopoverController *'

我正在嘗試調整本文的第一個答案: 如何使用StoryBoard在iPad上的Popover中顯示UIDatePicker?

這是我改編的代碼(datePicker在viewDidLoad中初始化):

CGRect pickerFrame = CGRectMake(0, 0, 320, 216);
datePicker = [[UIDatePicker alloc] initWithFrame:pickerFrame];
datePicker.datePickerMode = UIDatePickerModeDate;

- (IBAction)btnSurveyDate:(UIButton *)sender
{
    //Build custom popover view.
    UIView *v = [[UIView alloc] init];
    [v addSubview:datePicker];

    UIViewController *popoverContent = [[UIViewController alloc] init];
    popoverContent.view = v;

    //Resize the popover view shown in the current view to the view's size.
    popoverContent.preferredContentSize = CGSizeMake(320, 216);

    //Create a popover controller with my DatePickerViewController in it.
    UIPopoverController *poDate = [[UIPopoverController alloc] initWithContentViewController:popoverContent];

    //Set the delegate to self to receive the data of the DatePicker in the popover.
    poDate.delegate = self;

    //Present the popover.
    [poDate presentPopoverFromRect:self.txtSurveyDate.frame
                            inView:self.view
          permittedArrowDirections:UIPopoverArrowDirectionAny
                          animated:YES];

    datePicker = poDate;
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"dd/MM/yyyy"];        
    NSString *dt = [df stringFromDate:datePicker.date];
    self.txtSurveyDate.text = [NSString stringWithFormat:@"%@",dt];
}

但是,有兩個問題。 首先,我在最后一行收到編譯器警告:

datePicker = poDate;

錯誤是:

Incompatible pointer types assigning to 'UIDatePicker *' from 'UIPopoverController *' 

其次,關閉彈出窗口時,應用程序崩潰,並顯示以下錯誤:

unrecognized selector sent to instance

該應用程序在popoverControllerDidDismissPopover方法的這一行停止:

NSString *dt = [df stringFromDate:datePicker.date];

poDate是實例UIPopoverController ,而datePicker是類型變量UIDatePicker ,這就是為什么你在該行警告。

因此,在這一行(程序崩潰的地方):

NSString *dt = [df stringFromDate:datePicker.date];

date消息將發送到datePicker ,后者實際上是UIPopoverController一個實例。 Popover控制器沒有date方法,因此程序崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM