2014-02-11 5 views
3

Я как бы новичок в разработке и разработке iOS в целом.UIButton не отображается на iPhone 5S

Я работал над приложением для учета времени/записи, и я столкнулся с какой-то странной проблемой. На одном из контроллеров моего представления у меня есть UITableView, причем каждая ячейка является кнопкой, которая ведет к другому контроллеру представления. Предполагается, что в первой ячейке пользователь может нажать UIButton для запуска метода, который начинает отсчет времени. Когда вы запускаете этот метод, он активирует вторую UIButton, которую пользователь может нажать, чтобы остановить отсчет времени. Пока это происходит, UILabel с правой стороны ячейки показывает прошедшее время.

До сих пор это работало до нескольких дней назад. Я загрузил и начал использовать Xcode 5.1 beta 5 и начал работать над этим приложением. Теперь UIButtons не отображаются на моем iPhone 5S или каких-либо из моих тестеров, которые используют iPhone 5S. Он работает на iPhone Simulator и на реальных iPhone 5S, включая iPad.

Я думал, что это была 64-разрядная проблема, и я просмотрел свой код и не могу найти ничего, что не будет работать на 64-битных устройствах. Но я смотрел видео разработчика Apple, в котором говорится, что 32-разрядные приложения на 64-битных устройствах просто загружают 32-битные библиотеки iOS и запускают их так. Я еще не включил ARM-64 в своем приложении, так как до сих пор у меня не было никаких проблем с ним на любом устройстве. Произошло ли изменение в iOS 7.1 SDK в бета-версии 5, которая требует, чтобы табличные представления или UIButtons вызывались по-разному на 64-битных устройствах? Я даже попробовал его с 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; 

Спасибо за вашу помощь.

+0

iOS бета-версии сложны. Попробуйте перестроить приложение в качестве нового проекта и скопируйте свою работу в этом новом проекте с помощью бета-версии и посмотрите, работает ли это, или он выкинет предупреждение или исключение. Работая с бетасами, я узнал, что не все перегибы разработаны. В конце концов, это бета-версия. :) –

+0

У меня возникли проблемы из-за этой точной проблемы. Это все еще происходит в версии GA Xcode 5.1 и iPhone 5S. –

ответ

3

Я нашел решение проблемы. Я изменил свойства в файле заголовка, как это:

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

Я не знаю, почему я должен был бы сделать их «Strong», когда они работали хорошо, как «слабая» до и по-прежнему работал на симуляторе. Я могу только догадываться, что что-то изменилось в бета-версии 5 iOS 7.1 - раньше я строил Beta 3. Но как только я изменил свойства, я снова смог увидеть кнопки на тестовых устройствах iPhone 5S.

+0

Если это решит, вы должны принять свой собственный ответ. – Marco

+0

он не позволит мне принять мой собственный ответ до завтра. Я уже пробовал. – bdepaz

+0

Полезно знать, спасибо @bdepaz. – Marco

Смежные вопросы