2013-09-16 3 views
4

У меня есть собственный TableViewCell. В ячейке я добавляю две перекрестные значки (используя юникод) к обеим сторонам ячейки. когда пользователь нажимает на ячейку, на нем будет отображаться значок перекрестка.Невозможно увидеть динамический подъярус на iOS7 (Работа на iOS6)

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // add a cross 
     _crossLabel = [self createCueLabel]; 
     _crossLabel.text = @"\u274C"; 
     _crossLabel.textAlignment = NSTextAlignmentLeft; 
     // none of the following code works 
     [self insertSubview:_crossLabel aboveSubview:self]; 
     [self insertSubview:_crossLabel belowSubview:self]; 
     [self addSubview:_crossLabel]; 

     _crossLabel2 = [self createCueLabel]; 
     _crossLabel2.text = @"\u274C"; 
     _crossLabel2.textAlignment = NSTextAlignmentLeft; 
     [self addSubview:_crossLabel2]; 

     // add a pan recognizer 
     UIGestureRecognizer* recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; 
     recognizer.delegate = self; 
     [self addGestureRecognizer:recognizer]; 
    } 
    return self; 
} 

Для этого вы использовали код, указанный выше. И _crossLabel добавили в Custom TableView Cell.

Я использовал Reveal App, чтобы проверить расположение моего IOS приложения enter image description here Я могу видеть _crossLabel было добавлено в моем мобильном. Но я не вижу значок креста в моем симуляторе iOS 7. Я попытался использовать разные методы для добавления subView, но ни один из них не работает.

enter image description here

Но она прекрасно работает на iOS6 и расположение точно так же, как прошивка 7, когда я проверяю в Reveal App.

Благодарим за помощь.

+0

Не отслеживать причину этой же аварии в моем приложении, но спасибо за выкрик, чтобы показать. Не сталкивайтесь с этим раньше, и это потрясающе! –

ответ

11

Удостоверьтесь, что вы добавляете к содержимому cellView, [self.contentView addSubView:_crossLabel2];, а не к самой ячейке. Вы увидите, когда используете Reveal и проверяете iOS7, что в UITableViewCell UIKit добавил/поместил в UITableViewCellSCrollView над представлением ячейки, поэтому будьте осторожны с вашими вызовами insertSubview:belowSubview. Также из скриншота OutlineView of Reveal изображение «LocationCell» выделено серым цветом, что означает, что оно скрыто.

Редактировать просто на будущее:
В прошивке 7 новая UITableViewCellScrollView есть это набор свойств 'ClipToBounds. Это взлом, но если вы [self.contentView.superview setClipsToBounds: NO]. Супервизор - это UITableViewCellScrollView на iOS7 и сама ячейка на iOS6

+0

Спасибо, я попробовал self.contentView и попробую еще раз, это не сработает. Почему представление «LocationCell» выделено серым цветом, потому что я удалил последнюю ячейку из таблицы, приложение Reveal уловило последний макет перед анимацией. Помимо последней ячейки, все еще видно. Но когда я панорамирую его, он также не отображает значок креста. –

+0

Какая рамка имеет эти метки, когда вы их проверяете? Независимо от того, вы всегда должны добавлять содержимое contentView. На скриншоте Reveal вы можете видеть, что ярлыки находятся под UITableViewCellContentView. – theraven

+0

Я добавил их в contentView, но до сих пор не вижу их, я узнал, добавил ли я их внутри видимых границ ячейки, эти перекрестные значки видны, если я добавлю их к краю ячейки, он отключится. Поэтому я считаю, что проблема не в методе addSubView. Проблема, может быть, iOS 7 будет отображать только ячейку от x (0 ~ 320). –

-1

Не нужно добавлять содержимое содержимого. Просто вы можете получить доступ к subview в iOS7, используя

[[cell.subviews lastObject] subviews] 
Смежные вопросы