2013-07-04 2 views
0

Я пытаюсь создать простое приложение, которое использует основной вид и имеет меньший subview внутри него. Мне нужно иметь кнопки в подзоне, и у меня возникают проблемы с подключением кнопок. Я сделал следующее:subviews с UIButtons - как подключить кнопки к IBActions

  • Создать новый вид на основе проекта, который дал мне ViewController.h & .m, тем MainStoryboard.storyboard и AppDelegate.h & .m.
  • Создайте subView с помощью NewFile - Objective-C Class, а затем назовите его «subView1» и сделайте его подклассом UIViewController и установите флажок с помощью xib.
  • Это дало мне subView1.h & .m файлы и subView1.xib.
  • Затем я изменил размер subView в xib, установив его в «FreeForm» в инспекторе атрибутов, а затем указав ширину (до 280) и высоту (до 300) в инспекторе размеров. Я также меняю цвет фона, чтобы отличить его от основного вида.
  • Затем я перетащил UIButton в subView и связал его как IBAction (который я назвал «clickButton1») в файле subView1.h с помощью touchupinside.
  • Для целей тестирования только я тогда использовал простой NSLog проверить функциональность кнопки, которые я поместил в файле subView.m следующим образом:

-(IBAction)clickButton1:(id)sender {

NSLog(@"It Worked!");

}

  • В моем файле ViewController.m в viewDidLoad я затем добавил следующий код, чтобы добавить подвид в главном окне:

subView1 *sv1 = [[subView1 alloc]init];

sv1.view.frame = CGRectMake(20,120,280,300);

[self.view addSubview: sv1.view];

Это все работало нормально, и когда я запустить приложение я получаю основную ви w и подвью отображаются как ожидалось. Проблема заключается в том, когда я нажимаю на кнопку, которая находится в подвид он падает со следующей ошибкой:

Thread1:EXC_BAD_ACCESS(code=1, address=0xe00000008)

Из того, что я прочитал я считаю, что это может иметь что-то делать с тем, как я добавляю в подвид и тот факт, что я использую ARC. Что-то о том, что добавление subview добавляется автоматически, и поэтому все кнопки/соединения и т. Д. Внутри подзапроса теряются.

Итак, мои два вопроса: 1) Я пропустил что-то глупое здесь и есть ли легкое решение? и 2) Является ли это подходящим способом создания приложения, которое использует subviews с кнопками внутри них или есть лучший способ? Спасибо всем, кто тратит время, чтобы ответить!

ответ

0

Я попытался повторить то, что вы сказали.

Итак, вы сначала сделали приложение на основе View (установите флажок «Использовать раскадровки»), и вы положили кнопку в раскадровку. Затем вы управляете - перетащили кнопку в файл "ViewController.h". Если это верно, вы просто должны быть в состоянии поставить

NSLog(@"It Worked!"); 

в реализации метода (по крайней мере, я мог бы сделать это)

+0

Привет, спасибо за ответ! Нет, это не то, что я сделал. У меня нет проблем с размещением кнопки на главном экране и ее непосредственным подключением к ViewController.h.То, что я сделал, - создать новый класс obj-C под названием «subView1» и поместить его в кнопку в xib нового класса с помощью построителя интерфейса. Я не могу подключить кнопку непосредственно к ViewController.h, но я могу подключить ее к subView1.h. Затем я помещаю NSLog (@ «It Worked») в файл реализации subView1.m. – joshB

+0

Почему вы не можете подключить кнопку прямо к ViewController.h? –

+0

Я не помещал кнопку в раскадровку, потому что хочу ее в подвью. Это связано с тем, что я хочу сделать несколько subviews, каждый со своим собственным xib. И в основных представлениях я хочу поменять/переключиться между этими различными subviews, и у каждого поднабора будет другой набор кнопок. Подумайте, например, о главном экране, который содержит пользовательский клавиатурный блок (клавиатура будет подчиняться основному виду). Затем, в ответ на действие, я хочу переключиться на другую перспективную клавиатуру с разными кнопками. Мне не нужен совершенно новый Viewcontroller, потому что аспекты основного вида не будут изменены. – joshB

Смежные вопросы