我是新的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];
}
}
迈克尔
感谢您的提示!我尝试了您的建议,并添加了黑色背景......但仍未显示。如果我的理解是正确的,addSubview方法将sbview添加到其他任何东西之上。所以我有点失落...... –
嗯,是的。它会将它添加到子视图层的顶部。 是否有其他物品可见?你有没有尝试添加其他视图类型? 是否正确创建了self.view?或者由于某种原因它是零? –
我已经检查过,一切都很好的声明...我会编辑我的帖子,把代码。 –