Я пытаюсь подкласс UIView. У меня уже есть назначенный инициализатор, и я хочу иметь возможность для инициализации моего пользовательского представления либо из кода, либо из файла Nib. Итак, Apple сообщила нам использовать назначенный инициализатор, но они не делают этого сами - initWithCoder:
не вызывает initWithFrame:
. Что я должен сделать, чтобы назначить назначенный инициализатор в обеих ситуациях? Нет ли способа сделать это?Как переопределить initWithFrame: и initWithCoder: в подклассе UIView?
ответ
Упакуйте специальную инициализацию одним способом. Он может быть закрытым (объявлен в .m). Затем переопределите оба инициализатора и вызовите метод init из них.
- (void)myInitialization
{
//do your stuff
}
- (id)initWithFrame:(CGRect)aRect
{
self = [super initWithFrame:aRect];
if (self)
{
[self myInitialization];
}
return self;
}
- (id)initWithCoder:(NSCoder*)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[self myInitialization];
}
return self;
}
мы не должны включать '- (instancetype) init' инициализаторе ..? На всякий случай. Я новичок в объекте C. – shashwat
Не нужно - подклассы 'UIView' редко инициализируются _simple_' init'. В тех же случаях может иметь смысл включить 'init' также - то есть: если определенный тип представления обычно инициализируется фиксированным фреймом или что-то в этом роде. –
Как вы сказали:
initWithFrame: - Рекомендуется, чтобы реализации этого метода. Вы также можете использовать специальные методы инициализации в дополнение к или вместо этого метода.
initWithCoder: - Внедрите этот метод, если вы загрузите свой вид из файла nib-файла с интерфейсом Builder, и для вашего представления требуется пользовательская инициализация .
Что бы я сделал, это всего лишь метод, который оба вызывали бы, что будет иметь общее поведение, которое вы хотите реализовать в своем UIView
.
- 1. initWithFrame не работает в UIVIew
- 2. awkakeFromNib, initWithCoder, initWithFrame не вызывается
- 3. Настройка initWithFrame для UIView
- 4. UIView drawRect vs initWithFrame
- 5. - [UIView initWithFrame:] возвращение ноль
- 6. initWithFrame из UIView
- 7. вызов drawRect в подклассе UIView
- 8. Как переопределить onListItemClick в подклассе
- 9. UIView initWithFrame переписать высоту просмотра
- 10. Подкласс UIView initWithFrame не вызывается?
- 11. переопределяет UIView: initWithFrame и получил нулевые параметры
- 12. Утилита initWithFrame UIView не работает?
- 13. CAShapeLayer в подклассе UIView
- 14. UIPanGestureRecognizer в подклассе UIView
- 15. Как получить размеры пользовательского UIView, добавленного через раскадровку в initWithCoder :?
- 16. UIView: как установить свойство до вызова initWithFrame?
- 17. Переопределение init в подклассе
- 18. UITapGestureRecognizer EXC_BAD_ACCESS в автономном подклассе UIView
- 19. На iOS и Xcode, как можно включить автоматический запуск initWithCoder?
- 20. Что означает вызов initWithFrame в классе UIView или подклассе с CGRectZero?
- 21. метод вызова в подклассе UIView
- 22. drawRect в подклассе UIView не обновляет изображение
- 23. Изменение NSLayoutConstraint в подклассе UIView
- 24. C# Переопределить атрибут в подклассе
- 25. обработка событий в подклассе UIView
- 26. Переопределить общий тип в подклассе
- 27. Переопределить init в подклассе UITableViewCell
- 28. Как называть touchhesBegan в подклассе UIView в iOS 8?
- 29. Как не переопределить метод в подклассе Java?
- 30. Как создать сетку объектов в подклассе UIView?
Взгляните сюда, пожалуйста, и увидеть образец кода http://stackoverflow.com/a/17798646/381807 – nesimtunc