2013-08-09 2 views
1

У меня есть UIButton в каждой ячейке tableview, в которой у меня есть изображение. В основном я установил изображение на что-то другое, основанное на другом параметре. Вы можете игнорировать материал totalTime/activityTimeInt, но если это помогает, они просто ints (например, totaltime = 60, activitytime = 50). Ниже приводится cellforrowatindexpath:UIButton Изображение искажено в tableviewcell

if(totalTime <= activityTimeInt){ 
     [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicRed.png"] forState:UIControlStateNormal]; 
     [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)]; 
    } 
    if(totalTime + 10 >= activityTimeInt){ 
     [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicYellow.png"] forState:UIControlStateNormal]; 
      [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)]; 
    } 
    if(totalTime >= activityTimeInt){ 
     [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal]; 
      [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)]; 
    } 
} 
else if (!totalTime){ 
      [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal]; 
    [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)]; 
} 
return cell; 

По какой-то причине, когда если заявление проходит через

else if (!totalTime){ 
      [cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal]; 
    [cell.vicinitimeGraphicButton setFrame:CGRectMake(5,13,70,70)]; 
} 

где totalTime не существует, изображения выглядят как: without totalTime if statement

и когда он работает через другие 3 заявления (с totalTime), они выглядят так:

Если вам нужна дополнительная информация, так же как и к. Заранее спасибо.

+0

Есть ли что-то еще в этих блоках if/else, которые вы не разместили, связанные с меткой, отображающей 50 минут и т. Д.? –

+0

Нет, внутри блоков if/else ничего нет, кроме того, что опубликовано выше. Что касается установки меток, это код: cell.travelTimeLabel.text = [totalEverythingTimeArray objectAtIndex: indexPath.row]; 'но я не думаю, что это влияет на uibuttons. – Spenciefy

+0

. Есть ли какое-либо другое поле в ячейке, которое получает значение, когда общее время nil vs в противном случае? В принципе, в вашем коде должно быть какое-то другое место, где эти условия снова используются или общее время используется снова для установки некоторого значения поля. –

ответ

2

вам нужно использовать этот код

[cell.vicinitimeGraphicButton setBackgroundImage:[UIImage imageNamed:@"travelDistanceGraphicRed.png"] 
         forState:UIControlStateNormal]; 

так

  1. setImage:forState: устанавливает изображение как фактическое содержание кнопки. Например, вы не можете увидеть кнопку названия даже если вы установите его, потому что вы поставили перед собой изображение, содержания или же вы можете увидеть как изображение на левом и текст на правой, который в вас случае

  2. setBackgroundImage:forState: устанавливает изображение в качестве фона. В этом случае вы можете установить заголовок , и он отображается поверх изображения.

Обратите внимание, что вы не настройки по умолчанию фонового изображения для вас Баттона

+0

Если я использую setBackgroundImage, изображения не меняются после повторного запуска метода.Изменение таблицы основано на поиске и после повторного поиска, setBackgroundImage не отображает изображение спереди, поэтому я использовал setImage – Spenciefy

+0

, если я ошибаюсь в некоторых случаях setBackgroundimage работает и когда-то это dosnt работает это то, что вы имеете в виду. – Ayush

+0

извините, нет. Я имею в виду, что когда я использую setBackgroundImage, при первом загрузке tableview он отлично работает, но когда я пытаюсь обновить tableview новыми изображениями uibutton с помощью setbackgroundimage, новое обновленное изображение скрывается за старым изображением. Поэтому отображается только изображение uibutton, загруженное при первом загрузке tableview. Возможно, я ошибаюсь, но когда я использую setImage, изображения, похоже, обновляются. – Spenciefy

0

я понял, что проблема заключалась в том, что я установил изображение по умолчанию в файле customtablecell.xib, когда я не должен» t есть. терпеть неудачу с моей стороны. однако, это должно быть отложено назад, как описано выше.

enter image description here

изображение по умолчанию не должен быть установлен на что-нибудь.

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