есть ли какой-либо способ минимизировать код, поскольку у меня есть несколько текстовых полей на разных контроллерах. могу ли я закодировать только один раз и использовать его

#ios #objective-c

#iOS #objective-c

Вопрос:

Objective C есть ли какой-либо способ минимизировать код, поскольку у меня есть несколько текстовых полей на разных контроллерах.

Могу ли я закодировать только один раз и использовать его. Поскольку я хочу сделать текстовое поле прямоугольным, покажите изображение в левой части UITextFiled.

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

Комментарии:

1. да, создайте подкласс UITextField, который настроит текстовое поле так, как вы этого хотите, затем просто используйте свой класс вместо обычного UITextField

2. Это основная функция ООП: наследование, дочерние, родительские классы и т.д. 🙂

3. Может ли кто-нибудь помочь мне с любым надлежащим предварительно разработанным пользовательским классом для текстового поля.

Ответ №1:

Создайте подкласс UITextField и повторно используйте его в проекте.

YourBaseTxtField.h

 @interface YourBaseTxtField : UITextField 

// Take required properties 
@end
  

YourBaseTxtField.m

 @interface YourBaseTxtField () 

@end

@implementation YourBaseTxtField
- (id)initWithCoder:(NSCoder *)aDecoder{
    if (self = [super initWithCoder:aDecoder]) {

        //  Do customization
        self.clipsToBounds = YES;
        [self setLeftViewMode:UITextFieldViewModeAlways];

    }
 return self;
}
  

В вашем VCS

 - (void)viewDidLoad{

    self.textField = [[YourBaseTxtField alloc] init];
    self.textField.delegate = self;
    self.textField.keyboardType = UIKeyboardTypeDefault
}
// Use text field delegates
  

Спасибо

Комментарии:

1. — (id)initWithCoder:(NSCoder *)aDecoder{ if (self = [super initWithCoder: aDecoder]) { // Выполнить настройку самостоятельно.clipsToBounds = YES; [self setLeftViewMode:UITextFieldViewModeAlways]; } вернуть self; }

2. @aavirya, initWithCoder используется для загрузки файла nib. И вы не можете изменить метод. Вы можете использовать «awakeFromNib» или «initWithNibName: bundle» для настройки. Для ясного понимания quora.com / …

Ответ №2:

Вы должны подклассировать UITextField и использовать это. Я не очень хорошо помню Obj-C, но, насколько я помню, это что-то вроде этого в вашем файле .h: interface CustomTextField : UITextField .