Мне нужно передать строку из делегата приложения в мой контроллер начального представления, Может кто-то перечислил мне лучший способ сделать это, также я попытался сохранить и восстановить с помощью пользовательских настроек пользователя NS, но я не получился правильно.
Передача данных из делегата приложения для просмотра контроллера
Ответ 1
Интерфейс:
@interface MyAppDelegate : NSObject {
NSString *myString;
}
@property (nonatomic, retain) NSString *myString;
...
@end
и в файле .m для делегата приложения вы должны написать:
@implementation MyAppDelegate
@synthesize myString;
myString = some string;
@end
Затем в файле viewcontroller.m вы можете выбрать:
MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
someString = appDelegate.myString; //..to read
appDelegate.myString = some NSString; //..to write
Ответ 2
Здесь для Swift:
Контроллер просмотра
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
Кроме того, если у вас есть объект, который вы хотите передать между контроллерами представлений (например, у меня были данные CloudKit, которые я хотел разделить) добавьте это в App Delegate:
/* Function for any view controller to grab the instantiated CloudDataObject */
func getCloudData() ->CloudData{
return cloudDataObject
}
Затем вернитесь в View Controller
var model : CloudData = self.appDelegate.getCloudData()
Ответ 3
Вы можете получить доступ к контроллеру корневого представления, как это из делегата приложения:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
MyViewController* mainController = (MyViewController*) self.window.rootViewController;
[mainController passData:@"hello"];
return YES;
}