Я пытаюсь создать простое приложение, которое использует основной вид и имеет меньший 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 с кнопками внутри них или есть лучший способ? Спасибо всем, кто тратит время, чтобы ответить!
Привет, спасибо за ответ! Нет, это не то, что я сделал. У меня нет проблем с размещением кнопки на главном экране и ее непосредственным подключением к ViewController.h.То, что я сделал, - создать новый класс obj-C под названием «subView1» и поместить его в кнопку в xib нового класса с помощью построителя интерфейса. Я не могу подключить кнопку непосредственно к ViewController.h, но я могу подключить ее к subView1.h. Затем я помещаю NSLog (@ «It Worked») в файл реализации subView1.m. – joshB
Почему вы не можете подключить кнопку прямо к ViewController.h? –
Я не помещал кнопку в раскадровку, потому что хочу ее в подвью. Это связано с тем, что я хочу сделать несколько subviews, каждый со своим собственным xib. И в основных представлениях я хочу поменять/переключиться между этими различными subviews, и у каждого поднабора будет другой набор кнопок. Подумайте, например, о главном экране, который содержит пользовательский клавиатурный блок (клавиатура будет подчиняться основному виду). Затем, в ответ на действие, я хочу переключиться на другую перспективную клавиатуру с разными кнопками. Мне не нужен совершенно новый Viewcontroller, потому что аспекты основного вида не будут изменены. – joshB