UIView (SubView) не отправляет ibactions на AppDelegate
-
01-10-2019 - |
Вопрос
У меня возникла эта проблема, потому что я изначально сделал все в основной ниб, но затем после чтения узнал, что лучше использовать субвея.
У меня есть свои Ibactions в AppDelegate, и я успешно подключил и загрузил мои подзывы. Однако, когда я пытаюсь подключить мои кнопки в подзвах к ibactions в AppDelegate, Ibactions отображаются под «первым респондентом». Кажется, они подключаются нормально, но при запуске приложения они не вызывают ibactions (я подтвердил это некоторыми NSLogs, это не ошибка в коде в Ibactions). Что я делаю неправильно?
Спасибо!
Решение
AppDelegate следует использовать только для очень конкретных элементов, таких как реализация UIApplicationDelegate
протокол (то есть методы, такие как applicationDidFinishLaunching
) Или в некоторых случаях хранят глобальные переменные.
Вы должны сохранить ibactions и другие розетки в соответствующих файлах контроллера просмотра (т.е. если вы создали myviewcontroller.h и myviewcontroller.m, которые связаны с myviewcontroller.xib, где у вас есть несколько кнопок, изображений и т. Д.). Затем они могут быть подключены через перетаскивание контроля инспектора, который вы хотите (т. Е. TACHIONUPINSIDSIDE) к владельцу файла.
То, что вы должны читать, чтобы лучше понять контроллеры просмотра: http://developer.apple.com/iphone/Library/featureduredArticles/viewcontrollerpgforiphoneos/introduction/introduction.html.
Как правило, лучше всего создать уникальный контроллер представления для каждого представления, который вы представите пользователю. Например, если у меня был главный экран, а затем экран «о» или настройках, я бы сделал каждый из тех свой собственный контроллер просмотра. Это помогает организовать вещи лучше, чем использование одного взгляда с целым кучей субвезгов, которые вы скрываете / шоу, и также улучшат время загрузки и общей производительности.
Обновление для вашего второго вопроса в комментариях по доступу к делегату приложения:
Во-первых, вам нужно импортировать файл .h (т.е. #import "AppDelegate.h"
) Для выполнения приложений в какой файл контроллера просмотра .M Вы хотите использовать для доступа к любым переменным, массивам и т. Д. Вы сохранили в файлах делегирования приложений. Убедитесь, что вы синтезировать в зависимости от того, какие объекты вы создаете в файле The App Delegate's .h. В файле .m файл делегата приложения, чтобы созданы Getter и Setters (так что вы можете получить доступ к ним).
Затем в файле контроллера просмотра .m, в зависимости от этого метод, который вы используете:
-(void)someMethod {
// here we just create a shortcut to the app delegate called "theAppDelegate"
YourAppDelegateFileNameHere *theAppDelegate = (YourAppDelegateFileNameHere *)[[UIApplication sharedApplication] delegate];
// now you can use the dot notation if you wanna access a variable
int SomeNewInteger = theAppDelegate.someIntegerYouHaveStored;
// or some array you have stored
return [theAppDelegate.someArrayYouCreated count];
}
Надеюсь, это поможет!