Добавление пользовательского UIView в UIViewController в - (void) loadView (Objective-C) - PullRequest
0 голосов
/ 09 сентября 2011

Я беру класс программирования (для noobs), и мне нужно создать представление UIViewController graphViewController программно (без компоновщика интерфейса).

Представление простое, оно состоит только из IBOUtlet, который является экземпляром подкласса UIView с именем GraphView. graphView отвечает на несколько жестов мультитач для масштабирования и панорамирования и чего-то еще, но я справляюсь со всем этим в - (void)viewDidLoad.

Я просто создаю свойство self.view и graphView в коде ниже:

- (void)loadView
{
    UIView *gvcView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    self.view = gvcView;
    [gvcView release];

    GraphView *aGraph = [[GraphView alloc] initWithFrame:self.view.bounds];
    self.graphView = aGraph;
    [aGraph release];

}

Когда я запускаю приложение, я не вижу там представления graphView. Я просто получаю прозрачное представление с надписью «My Universal App». Я в тупике. Пожалуйста, помогите.

Дайте мне знать, если вам нужен дополнительный код.

Спасибо!

Обновление: большое спасибо BJ Homer за быстрое исправление!

пришлось сделать следующее:

добавить эту строку кода: [self.view addSubview:self.graphView]; в конце.

Я также получал эту странную ошибку, когда graphView отображался как полностью черный. Эта строка кода исправила это: self.graphView.backgroundColor = [UIColor whiteColor];

И это все!

Последний вопрос: черный ли цвет фона по умолчанию для пользовательского интерфейса UIView?

Еще раз спасибо!

1 Ответ

1 голос
/ 09 сентября 2011
[self.view addSubview:self.graphView];

Пока вы не добавите представление графика в родительское представление, UIKit не знает, где его отобразить. self.view является особенным, так как это свойство, которое -loadView должно устанавливать. Это представление будет автоматически добавлено на экран. Но ваше графическое представление просто плавает в эфире, пока вы не добавите его куда-нибудь.

...