проблема экземпляра / метода iphone - PullRequest
0 голосов
/ 19 марта 2010

Хорошо, у меня есть метод viewController, в котором есть некоторые элементы, созданные с помощью построителя интерфейса, а некоторые я сам кодировал.

Я создал представление в IB ... давайте назовем его viewOne. Я создал цикл, который создает кнопки (с помощью кода) и размещает их в отдельном представлении (viewTwo). Это делается в методе класса. Однако я хочу, чтобы созданный мной вид открывался при каждом нажатии одной из кнопок. Итак, я сделал:

[button addTarget:self action:@selector(woogoo:)
             forControlEvents:UIControlEventTouchUpInside];

Класс woogoo выполняет следующие действия:

+(void) woogoo:(id)sender { 
    //back button
    [self.view addSubview:viewOne]
}

Однако, программа вылетает при нажатии кнопки. Я попытался сделать woogoo методом экземпляра, но в этом случае он тоже дает сбой. Все, что я хочу сделать, это показать viewOne при нажатии кнопки. Есть идеи, что я могу сделать?

Ответы [ 3 ]

0 голосов
/ 19 марта 2010

Недостаточно информации, но я думаю, что-то не так с контентом "viewOne", когда вы находитесь в woogoo Добавьте эту строку непосредственно перед addSubview и посмотрите, что вы получите на консоли:

NSLog("woogoo: %@", viewOne);

Вы должны увидеть что-то вроде этого, которое соответствует типу представления и фрейму, который вы создали для viewOne. Если вы видите (ноль) или что-то еще хорошо, проверьте, как устанавливается viewOne.

<UIView: 0x4519b70; frame = (10 1; 300 43); layer = <CALayer: 0x4519540>>

Возможно, вы могли бы опубликовать дополнительную информацию о том, как / когда viewOne создается / инициализируется.

0 голосов
/ 19 марта 2010

В +woogoo: вы вызываете self.view. Поскольку это метод класса, self также является классом, поэтому +view также должен быть методом класса. Вы сделали это методом класса?

Если нет, вам нужно сделать -woogoo: метод экземпляра, а также код, который вызывает -addTarget:… метод экземпляра, и распространяться вверх.

0 голосов
/ 19 марта 2010

Вместо этого, почему бы вам не подключить IBAction в компоновщике интерфейса к кнопке, тогда вы можете просто поместить [self.view addSubview: viewOne]; в этот метод IBAction.

PS. Вы пропустили точку с запятой после [self.view addSubview: viewOne]

Приветствия

...