32

Appデリゲートから初期ビューコントローラーに文字列を渡す必要があります。誰かがそれを行うための最良の方法をリストしてくれませんか?また、NSユーザーのデフォルトを使用して保存と取得を試みましたが、うまくいきません.

4

4 に答える 4

30

インターフェース:

@interface MyAppDelegate : NSObject  {
  NSString *myString;
}
@property (nonatomic, retain) NSString *myString;
...
@end

App Delegateの.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
于 2013-02-24T08:34:13.083 に答える
20

Swift の場合は次のとおりです。

ビューコントローラー

let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate

さらに、View Controller 間で渡したいオブジェクトがある場合 (たとえば、共有したい 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()
于 2015-02-10T17:49:11.743 に答える
14

アプリのデリゲートから次のようにルート ビュー コントローラーにアクセスできます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    MyViewController* mainController = (MyViewController*)  self.window.rootViewController;
    [mainController passData:@"hello"];

    return YES;
}
于 2013-02-24T08:53:21.183 に答える