Подтвердить что ты не робот

Передача данных из делегата приложения для просмотра контроллера

Мне нужно передать строку из делегата приложения в мой контроллер начального представления, Может кто-то перечислил мне лучший способ сделать это, также я попытался сохранить и восстановить с помощью пользовательских настроек пользователя NS, но я не получился правильно.

4b9b3361

Ответ 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;
}