Я новичок в разработке для iPhone и застрял с подпредставлением, которое не отображается после уведомления контроллера о необходимости обновления этих элементов.
Итак, это моя главная страница, показывающая 3 последних элементановостной ленты внизу.Контроллер представления управляет загрузкой новостной ленты (в NSArray).При загрузке страницы лента новостей корректно отображается как подпредставление основного вида.Однако, когда представление уже существует (например, сразу после первого входа в систему), новостная лента не отображается и не обновляется.Изображения аватара, которые извлекаются из Интернета асинхронно, отображаются правильно.Но не надписи.
Отладка показывает, что код выполняется правильно ... но ничего не происходит ...
Вот код, обрабатывающий уведомление и обновление.
Я уверен, что упустил что-то глупое, но не могу понять, что на нем.Может ли UILabel или UIImage подпредставления избежать обновления элемента?
Спасибо за помощь!
Код контроллера
-(void) handleRefreshNewsfeed:(NSNotification*)notification{
if (self.newsfeedMostRecentDate == nil){
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyyMMdd HH:mm"];
self.newsfeedMostRecentDate = [dateFormatter dateFromString:@"20100101 00:00"];
[dateFormatter release];
}
NSArray * newsfeed = [cdw getNewsfeedForUser:self.currentUser andLimit:self.newsfeedLimit];
if ([newsfeed count] > 0){
self.newsfeedMostRecentDate = [(Newsfeed *)[newsfeed objectAtIndex:0] posted];
if ([self.view isKindOfClass:[MenuView class]]){
[(MenuView *)self.view refreshNewsfeed:newsfeed];
}
}
}
Декларация основного вида:
@interface MenuView : UIView {
MenuNewsfeed * newsFeedView;
}
@property(nonatomic, retain) IBOutlet MenuNewsfeed *newsFeedView;
-(void)displayNewsfeed:(NSArray *)newsfeed;
-(void)refreshNewsfeed:(NSArray *)newsfeed;
Код основного вида:
-(void)displayNewsfeed:(NSArray *)newsfeed{
[self.newsFeedView setCurrentUser:currentUser];
[self.newsFeedView displayNewsfeed:newsfeed];
[UIView animateWithDuration:0.75f
delay: 0.0
options: UIViewAnimationOptionCurveEaseIn
animations:^{
self.newsFeedView.alpha = 1.0;
}
completion:^(BOOL finished){
//nothing
}
];
}
-(void)refreshNewsfeed:(NSArray *)newsfeed{
if ([self.newsFeedView.newsfeed count] > 0){
[UIView animateWithDuration:0.50f
delay: 0.0
options: UIViewAnimationOptionCurveEaseIn
animations:^{
self.newsFeedView.alpha = 0.0;
}
completion:^(BOOL finished){
// [self displayNewsfeed:newsfeed];
}
];
}else {
[self displayNewsfeed:newsfeed];
}
}
Майкл