以编程方式添加UIButtons:在模拟器中工作,但在手机上不工作

时间:2009-11-12 02:52:53

标签: iphone uibutton

我正在尝试以编程方式在循环数组时向屏幕添加按钮。我在下面发布的代码在模拟器中工作得很好(并且在手机上没有错误地执行),但是,按钮没有添加到手机的屏幕上。关于我哪里出错的任何建议?

// 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;
}

2 个答案:

答案 0 :(得分:1)

UIButton的类方法创建一个自动释放对象。

不确定为什么它在模拟器中有效,但您不需要发布或nil。

您的代码确实将创建的按钮放在视图中的相同位置(彼此重叠),不确定这是否是您想要的。

答案 1 :(得分:0)

经过一些进一步的调试后,看起来iPhone在访问文件系统时(或至少在这种情况下)是区分大小写的,而iPhone模拟器则不是。

为了简单起见,我在发布时删除了一些switch语句。在图像分配开关中犯罪的罪魁祸首是@"missionIconPickup.png";,应该是@"missionIconPickUp.png";

如果模拟器捕获了它,那将是很好的。我有点尴尬的是发布了一个拼写错误的问题。