从另一个类调用函数在屏幕上绘制

时间:2013-08-24 16:07:06

标签: ios objective-c

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

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

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

CalendarArrayHandler.m-Class然后启动解析和许多其他东西来解释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-class中)接收NSMutableArray(成功),它将在displayCalendar-function的屏幕上绘制。使用

调用此函数
[self performSelectorOnMainThread:@selector(displayCalendar) withObject:nil waitUntilDone:NO];

在这里出现问题,UIview和标签将不会显示在屏幕上。我尝试使用IBAction调用displayCalendar-function并且它工作正常,但是当我从Calendar.m-class外部调用load函数时我无法工作,即使使用performSelectorOnMainThread调用displayCalendar-function也是如此-function。

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

0 个答案:

没有答案
相关问题