我正在尝试以编程方式在循环数组时向屏幕添加按钮。我在下面发布的代码在模拟器中工作得很好(并且在手机上没有错误地执行),但是,按钮没有添加到手机的屏幕上。关于我哪里出错的任何建议?
// loop through missions, dropping buttons
UIButton *button;
for(mission in activeMissions){
// add a button for the mission
buttonImage = [UIImage imageNamed:@"missionIconAttack.png"];
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0,0, buttonImage.size.width, buttonImage.size.height);
button.center = CGPointMake(60, 298); // hard coded for simplicity
button.tag = [missionButtons count];
[button setImage:buttonImage forState:UIControlStateNormal];
[button addTarget:self action:@selector(SelectMission:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
[missionButtons addObject:button];
[button release];
button = nil;
}
答案 0 :(得分:1)
UIButton的类方法创建一个自动释放对象。
不确定为什么它在模拟器中有效,但您不需要发布或nil。
您的代码确实将创建的按钮放在视图中的相同位置(彼此重叠),不确定这是否是您想要的。
答案 1 :(得分:0)
经过一些进一步的调试后,看起来iPhone在访问文件系统时(或至少在这种情况下)是区分大小写的,而iPhone模拟器则不是。
为了简单起见,我在发布时删除了一些switch语句。在图像分配开关中犯罪的罪魁祸首是@"missionIconPickup.png";
,应该是@"missionIconPickUp.png";
。
如果模拟器捕获了它,那将是很好的。我有点尴尬的是发布了一个拼写错误的问题。