我正在尝试编写代码,将玩家添加到基于对象的视图中,但我遇到了一些问题。
目前,如果我在playerList中使用4个已确认工作的Player对象运行initView方法,则只有3个UIView会出现在我的滚动视图中,然后当我单击清除播放器按钮时,只有最后一个(第三个)UIView会被删除。
顺便说一句,我的自定义按钮也没有出现在UIViews中,我有一个它们应该加载的图像,但它不起作用。
提前感谢您的帮助。
- (void)clearPlayers {
for (Player* i in self.playerList) {
[i.viewPane removeFromSuperview];
}
[self.playerList removeAllObjects];
}
- (void)initView {
int Loc = 0;
int Count = 1;
int margin = 5;
int height = 100;
for (Player *p in playerList) {
UIView *playerView = [[UIView alloc] initWithFrame:CGRectMake(0, Loc, 320.0, height)];
p.viewPane = playerView;
[playerView setBackgroundColor:[UIColor redColor]];
[scrollView addSubview:playerView];
UIButton *plus = [[UIButton alloc] initWithFrame:CGRectMake(200, 10, (height - 5), (height - 5))];
UIImage *buttonImage =[[UIImage alloc] initWithContentsOfFile:@"Metal_Plus_Up_2.png"];
[plus setBackgroundImage:buttonImage forState:UIControlStateNormal];
[p.viewPane addSubview:plus];
[plus release];
[playerView release];
Loc = Loc + (height + margin);
Count = Count + 1;
}
[scrollView setContentSize:CGSizeMake(320.0, (height * Count) + (margin * Count))];
}
问题:您是否验证了从initWithContentsOfFile返回的UIImage不是nil?您可能需要完整的路径,而不仅仅是文件名
就UIViews没有被删除的古怪之处而言,在我看来,你发布的所有内容都很好。我唯一能想到的是,也许您没有将retain指定为viewPane属性的属性。。。