Инициализация пользовательского интерфейса с помощью массива из UIViewController

#iphone #objective-c #ios #xcode

#iPhone #objective-c #iOS #xcode

Вопрос:

У меня есть UIView, который получает init от Viewcontroller, однако, когда я пытаюсь передать ему массив, массив возвращается во время инициализации. Но если я создам кнопку в UIView, а затем проверю переданный массив, я увижу, что он загружен правильно. Итак, мой вопрос заключается в следующем: как я могу передать массив в UIView, чтобы при выделении и инициализации UIView я мог загружать массив, а не после.

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

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

1. можете ли вы опубликовать код того, что вы пробовали… Исходя из этого, вам нужно создать новую initWithArray:(NSArray *)array функцию, которая сохранит массив, о котором вы говорите

Ответ №1:

Добавьте в свой подкласс UIView что-то вроде

 - (id)initWithFrame:(CGRect)frame dataArray:(NSArray*)array_ {
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        myArray = array_;


    }
    return self;
}
 

И myArray должно быть полем (или свойством) вашего класса.

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

1. почему ‘array_’ вместо просто ‘array’?

2. Да, это завершающее подчеркивание, на мой взгляд, действительно плохой стиль. Для чего большинство людей используют его, и даже некоторые примеры кода Apple делают это, так это для обозначения переменных экземпляра . Зачем ломать эту привычку и использовать ее для параметров метода? Очень запутанно.

3. Спасибо, что заметили это, ребята. Возможно, мне нужно опубликовать здесь еще немного кода, чтобы исправить мой стиль 🙂