-1

在我的应用程序中,我有故事板,并且有很多使用日期选择器查看控制器的 segues。

在进行选择后,如何将NSDate作为指针传递以将值保留在该NSDate对象中?

现在,在我的AppDelegate财产中,我有很多 NSDate。在prepareForSegue我将NSDate查看控制器的权利作为保留属性传递:

@property (retain, nonatomic) NSDate * date;

做出选择后,我为这个属性赋值:

- (IBAction)dateChanged:(id)sender{
    if (date) {
        date = datePicker.date;
    }
}

但它不起作用。

我哪里错了?

4

2 回答 2

3

您所描述的东西在 Objective-C 用语中称为传递引用。由于对象类型的变量已经是指针,因此您需要一个指针指针类型。要实现这一点,您需要将一个传递NSDate **dateReference给您的日期选择器控制器。选择控制器将设置的日期后*dateReference = pickedDate

但这是回传所选日期的一种不常见且脆弱的方式。更好的方法是在日期选择器控制器上使用委托,并使用支持日期选择的协议。

或者,在这种简单的情况下,使用基于块的 API 更好:日期选择器控制器获取一个completionBlock,客户端控制器将在呈现日期选择器之前设置它。

于 2013-05-27T15:51:53.253 回答
1

而不是:

date = datePicker.date

利用:

self.date = datePicker.date

同样,请参阅 self.date。有关更多信息,请参阅在不使用自引用的情况下设置 Objective-C 类属性

于 2013-05-27T15:49:51.977 回答