Приложение AppDelegate должно использоваться только для очень специфичных элементов, таких как реализация протокола UIApplicationDelegate
(то есть методов, таких как applicationDidFinishLaunching
) или в некоторых случаях хранения глобальных переменных.
Вы должны держать IBActions и другие выходы в своих файлах контроллера соответствующего вида (т. Е. Если вы создали MyViewController.h и MyViewController.m, которые связаны с MyViewController.xib, где у вас есть кнопки, изображения и т. Д.). Затем их можно подключить, перетаскивая управляющий инспектор, который вы хотите (т. Е. TouchUpInside) владельцу файла.
Что-то вы должны читать, чтобы лучше понять контроллеры просмотра: http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html
Как правило, лучше, чтобы создать уникальный контроллер представления для каждого просмотра вы представить пользователю. Например, если у меня был главный экран, а затем экран «about» или настройки, я бы сделал каждый из них своим собственным контроллером представления. Это помогает организовать вещи лучше, чем использовать один вид с целым куском подсмотров, которые вы скрываете/показываете, а также улучшаете время загрузки и общую производительность.
Обновление для 2-го вопроса в комментариях о доступе к приложения делегат:
Во-первых, необходимо импортировать файл .h (т.е. #import "AppDelegate.h"
) для приложения делегата в какой бы ни контроллера представления .m файл, который вы хотите использовать для доступа к любым переменным, массивам и т. д., которые вы сохранили в файлах делегирования приложения. Убедитесь, что вы синтезировали какой-либо объект, который вы создали в файле .h-файла делегата приложения в файле .m-файла делегата приложения, чтобы создать геттеры и сеттеры (чтобы вы могли получить к ним доступ).
Затем в файле .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];
}
Надежда, что помогает!
Спасибо! Как насчет доступа к объектам из AppDelegate в контроллере представления? Я объявил AppDelegate следующим образом: // Интерфейс AppDelegate * appDelegate; @property (nonatomic, keep) AppDelegate * appDelegate; // Реализация @synthesize appDelegate; appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate]; все же, когда я пытаюсь что-то сделать, я всегда получаю «доступ к неизвестному методу геттера». Извините, что stackOverflow не позволяет мне форматировать свой комментарий. –
Пожалуйста, см. Мой обновленный ответ о том, как правильно его называть.Это немного отличается от делегата приложения, поскольку вам не нужно настраивать свойства или синтезировать его так, как вы делали (именно поэтому вы получаете ошибку неизвестного метода getter) – iwasrobbed
P.S. Если ответ вам полезен, пожалуйста, прибегайте к тому, чтобы получить ответ, какой из ответов наиболее полезен. Это вроде как дать людям похлопывать по спине за их помощью здесь :) – iwasrobbed