0

我正在应用程序中实现日历功能。当日历类 Calendar.m 出现时,我调用一个函数来启动另一个函数(CalendarArrayHandler.m),该函数将使用以下代码处理解析:

CalendarArrayHandler *caller = [[CalendarArrayHandler alloc] init];

[caller performSelectorInBackground:@selector(mergeCalendars:) withObject:calendarUrlArray];

然后 CalendarArrayHandler.m 类启动解析和许多其他东西来解释 XML 文件。完成后,我使用以下代码保存 NSMutableArray:

NSData *calendarData = [NSKeyedArchiver archivedDataWithRootObject:sortedArrayToSave];
[[NSUserDefaults standardUserDefaults] setObject:calendarData forKey:@"CalendarEntries.dat"];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *arrayFileName = [documentsDirectory stringByAppendingPathComponent:@"CalendarEntries.dat"];

[calendarData writeToFile:arrayFileName atomically:YES];

此时我调用 Calendar.m 类中的 loadCalendarEntriesFromFile 函数

Calendar *caller = [[Calendar alloc] init];

[caller performSelectorInBackground:@selector(loadCalendarEntriesFromFile) withObject:nil];

这个函数(现在在 Calendar.m 类中)接收 NSMutableArray(成功),它将在 displayCalendar 函数中绘制在屏幕上。这个函数被调用

[self performSelectorOnMainThread:@selector(displayCalendar) withObject:nil waitUntilDone:NO];

就是这里出了点问题,UIviews 和标签不会显示在屏幕上。我尝试使用 IBAction 调用 displayCalendar 函数,它工作得很好,但是当我从 Calendar.m 类外部调用 load 函数时,即使使用 performSelectorOnMainThread 调用 displayCalendar 函数,我也无法让它工作-功能。

我希望你能理解我的问题,看看为什么它不起作用。

4

0 回答 0