0

textViewController クラスがあります。現在のtextViewControllerをプッシュしている別のView Controllerから、対応するtextViewのコンテンツを設定(基本的に更新)したい。私がこれを行うことができると思った方法は、共有シングルトン クラスを持ち、そこにテキストを含む文字列プロパティを持たせることでした。私はシングルトンを他のコンテンツの保存にも使用してきましたが、今までは問題なく機能していました。


しかし、シングルトン クラスのテキスト変数は、2 番目のビュー コントローラーから渡したコンテンツを保持しないため、textViewController は、2 番目のビュー コントローラーをポップした後、再表示された後でも古いテキストを表示します。呼び出されているviewWillAppearメソッドでtextViewを更新していますが、NSLoggingで古いテキストコンテンツを表示しています。ここで何が欠けていますか?長い間立ち往生している解決策を提案してください。

4

2 に答える 2

2

宣言

まず、NSStringアプリデリゲート.hファイルでを宣言します。次のようになります。

//YourAppDelegate.h

#import <UIKit/UIKit.h>

@interface YourAppDelegate : NSObject < UIApplicationDelegate >
{
    NSString *sharedString; //WE ADDED THIS
}

@property (nonatomic, retain) NSString *sharedString; //AND THIS
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet SomeViewController *viewController;

@end

次に、アクセサーメソッドとミューテーターメソッドが作成されるようにオブジェクトを合成します。setSharedString:これは、メソッドとメソッドを記述する必要がないことを意味しますgetSharedString。オブジェクトを参照することで、オブジェクトにアクセスして変更することができます。これは、.mファイルでそれを合成する方法です。

//YourAppDelegate.m
@synthesize sharedString;

値の割り当て

sharedString別のクラスから値を割り当てる場合は、最初にアプリケーションデリゲートのアクティブなインスタンスを取得する必要があります。

YourAppDelegate *appDelegate = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];

ここでのappDelegateオブジェクトは、実行中のアプリデリゲートインスタンスです。デリゲート内のオブジェクトにアクセスしsharedString NSStringて値を割り当てるには、次のようにします。

appDelegate.sharedString = @"some string we want to assign";

アプリケーションの実行時間中、「割り当てたい文字列sharedString」がアプリデリゲートに保存されるようになりました。

値の取得

ある時点で値を取得する必要があります。これを行うには、アプリケーションデリゲートの実行中のインスタンスを取得する必要があります。

YourAppDelegate *appDelegate = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];

実行中のインスタンスができたら、そのsharedString中に保存されているオブジェクトにアクセスできます。

NSString *retrievedString = appDelegate.sharedString;

この時点からretrievedString、値「割り当てたい文字列」を保持します。

ノート:

私が言及YourAppDelegateするすべての場所で、私はあなたのアプリデリゲートを指します-あなたがあなたのプロジェクトに持っているアプリデリゲートです。プロジェクト名に関連付けられます(ファイルを探してください)。

于 2012-07-09T13:11:11.933 に答える
0

Text-Variable の NSString プロパティはどのように定義されていますか? 「弱い」ですか?

于 2012-07-09T13:04:50.323 に答える