簡単なことだとわかっているので、これを尋ねるのは無知だと思います。目標: ビューを離れてからビューに戻った後も変数を保持します。
例: MainView、CategoryView、および (ドラムロール) ProjectViewがあるとします。
アプリケーションがMainViewに開き、テーブルが表示されます。ユーザーは、カテゴリを選択することを選択します。このセグエはCategoryViewへのそれらです。選択したら、選択したカテゴリをMainViewに送り返します。経由
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
ここでは問題ありません。MainView は変数を受け取り、選択したカテゴリを「カテゴリ」セクションのサブテキストとして表示します。次に、ユーザーはプロジェクト名を選びたいと考えています (これも定義済みのリストです)。ユーザーは項目を選択し、変数を MainView に送り返します。
-- メイン ビューに戻ると、以前は「選択された」カテゴリを保持していた NSString 変数が null になっている理由を誰かが (優しく) 説明してくれませんか?
私の NSString selectedProject は正しく保持されていませんか? ここで行うべき正しい実装は何ですか? または、何が欠けていますか?私は本当に何が起こっているのかを理解しようとしているので、何かが大きな助けになります.
MainView インターフェイス
@interface MainViewController : UIViewController {
NSString *selectedProjectName;
NSString *selectedCategory;
}
@property (nonatomic, retain) NSString *selectedProjectName;
@property (nonatomic, retain) NSString *selectedCategory;
@end
MainView の実装
@implementation MainViewController
@synthesize selectedCategory, selectedProjectName;
必要に応じて.. ProjectView の実装
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"masterSegue"]) {
MainViewController *vc = (MainViewController *)[segue destinationViewController];
LogValues *lv = [LogValues alloc];
lv.project = @"Test Project Name";
vc.selectedProjectName = lv.project;
}
}