这个目标C线做什么?代表,自我,做了选择日期

时间:2012-11-18 11:56:08

标签: objective-c delegates calendar

有人可以概述这条线的确切含义吗?

    [self.delegate calendar:self didSelectDate:self.selectedDate];

此行主要用于在另一个类的标签dateLabel上设置日期。

    CKCalendarView *calendar = [[CKCalendarView alloc] initWithStartDay:startMonday];
    calendar.delegate = self;

    self.dateFormatter = [[NSDateFormatter alloc] init];
    [self.dateFormatter setDateFormat:@"dd/MM/yyyy"];
    calendar.selectedDate = [self.dateFormatter dateFromString:@"18/11/2012"];
    calendar.minimumDate = [self.dateFormatter dateFromString:@"09/11/2012"];
    calendar.maximumDate = [self.dateFormatter dateFromString:@"29/11/2012"];

    calendar.frame = CGRectMake(10, 10, 300, 320);
    [self.view addSubview:calendar];

    self.dateLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, CGRectGetMaxY(calendar.frame) + 4, self.view.bounds.size.width, 24)];
    [self.view addSubview:self.dateLabel];

关于上述内容所做的“联系”详细说明会有很大帮助。

1 个答案:

答案 0 :(得分:2)

简单地说,你的日历有一个CKCalendar对象的实例,一个看起来是UIView类之一的子类的视图(我假设,因为我们无法告诉,因为您没有包含.h文件或您正在使用的.m文件中的完整代码)。

来自UIView的大多数类需要委托来处理用户界面中的行为并由其生成。 (有关代表所做事情的详细说明,请参阅How does a delegate work in objective-C?)。请注意,您在实例化calendar后立即明确设置了委托:

calendar.delegate = self

所以使用那一行,你使这个类显示和委托,所以你的类需要实现协议所需的任何方法(其中一个看起来是 -(void)calendar:didSelectDate:。)

您引用的代码行(基本上)“使用委托中找到的-(void)calendar:didSelectDate:方法并传递自身,selectedDate作为该方法的参数/参数。”。

我已将该行写成:

[[self delegate] calendar:self didSelectDate:[self selectedDate]];

希望有所帮助。