UIButton没有出现在iPhone 5S上

时间:2014-02-11 01:22:42

标签: ios iphone uitableview ios7 uibutton

我对iOS开发和开发有点新意。

我一直在制作时间/记录保存应用程序,我遇到了一个奇怪的问题。在我的一个视图控制器上,我有一个UITableView,每个单元格都是一个通向不同视图控制器的按钮。在第一个单元格上,用户应该能够推送UIButton来运行一个开始计算时间的方法。当您运行该方法时,它会激活用户可以按下以停止计时的第二个UIButton。正在进行此操作时,单元格右侧的UILabel显示已用时间。

到目前为止,它一直运作良好,直到几天前。我下载并开始使用Xcode 5.1 beta 5并开始使用其中的应用程序。现在UIButtons没有出现在我的iPhone 5S或任何使用iPhone 5S的测试人员身上。它适用于iPhone模拟器和真正的非5S iPhone,包括iPad。

我想也许这是一个64位问题,我查看了我的代码,找不到任何无法在64位设备上运行的东西。但是我看了一个Apple Developer Video,它说64位设备上的32位应用程序只会加载32位iOS库并运行它们。我还没有在我的应用程序上启用ARM-64,因为到目前为止我在任何设备上都没有遇到任何问题。测试版5中的iOS 7.1 SDK是否有变化,需要在64位设备上以不同方式调用tableview或UIButton?我甚至尝试使用64位模拟器,它也能很好地工作。

我把相关代码放在下面。我是开发中的新手,非常感谢任何帮助。

//Set Button Properties
self.startTimeButton.frame = CGRectMake(0, 0, 100, 39);
self.startTimeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.startTimeButton setTitle:@"Start Time" forState:UIControlStateNormal];
self.startTimeButton.backgroundColor = [UIColor greenColor];
[self.startTimeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.startTimeButton setTitleColor:[UIColor blackColor] forState:UIControlStateDisabled];
[self.startTimeButton addTarget:self action:@selector(startCountingTime) forControlEvents:UIControlEventTouchUpInside];

//Set Button 2 Properties
self.stopTimerOut = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.stopTimerOut.frame = CGRectMake(100, 0, 100, 39);
[self.stopTimerOut setTitle:@"Stop Time" forState:UIControlStateNormal];
self.stopTimerOut.backgroundColor = [UIColor redColor];
[self.stopTimerOut setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.stopTimerOut addTarget:self action:@selector(stopCountingTime) forControlEvents:UIControlEventTouchUpInside];

//Set Timer Label
self.timerDisplayLabel = [[UILabel alloc] initWithFrame:CGRectMake(250, 0, 60, 40)];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

// First Section - Time Section
if (indexPath.section == 0) {
    if (indexPath.row == 0) {
        [cell addSubview:self.startTimeButton];
        [cell addSubview:self.stopTimerOut];
        [cell addSubview:self.timerDisplayLabel];
        [cell addSubview:self.timerActivityDiscloser];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    if (indexPath.row == 1) {
        cell.textLabel.text = @"Manually Enter Time";
    }
    if (indexPath.row == 2) {
        cell.textLabel.text = @"View Time for Month";
    }
}

这是我的头文件

@property (weak, nonatomic) UIButton *startTimeButton;
@property (weak, nonatomic) UIButton *stopTimerOut;
@property (strong, nonatomic) UILabel *timerDisplayLabel;

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我找到了问题的解决方案。我更改了头文件中的属性,如下所示:

@property (strong, nonatomic) UIButton *startTimeButton;
@property (strong, nonatomic) UIButton *stopTimerOut;
@property (strong, nonatomic) UILabel *timerDisplayLabel;

我不知道为什么我需要让它们变得“强壮”,因为它们在之前的“弱”之前工作得很好并且仍在模拟器上工作。我只能猜测iOS 7.1的Beta 5中发生了一些变化 - 我之前使用的是Beta 3。但是一旦我更改了属性,我就可以再次看到测试iPhone 5S设备上的按钮。