-1

申し訳ありませんが、この質問は以前に尋ねられたことを知っています。しかし、4 時間の検索の後、適切な説明が見つかりませんでした。

だから私がやりたいこと: ユーザーが何かを選択できる tableView があります (AccessoryCheckmark を使用して)。UINavigationBar の「戻る」ボタンがタッチされると (viewWillDisappear)、選択された行 (選択された値を正しく提供する「selectedRowArray」という配列があります) を前の NavigationController に送り返したいと思います。AppDelegates、@propertys、デリゲート、および(適切に「最も厄介な」方法:) NSUserDefaultsについて読みました。

私のデータをtableView2からtableView1に戻すための最良の(最もスマートな)方法はどれですか?

4

4 に答える 4

1

前のビュー コントローラーを選択ビュー コントローラーのデリゲートにします。

選択ビュー コントローラーから、前のビュー コントローラーでデリゲート メソッドを呼び出して、何が選択されたかを伝えます。

基本的に、彼らの鍵はデリゲートを使用することです。選択コントローラーの弱いプロパティを設定するデリゲートを作成します (つまり、iOS 5 以降をターゲットにする必要があります)。

プロトコルはオプションです。

于 2012-09-04T20:12:46.277 に答える
0

私は同様の状況にあり、ios dev は初めてなので、私の回答を参考にしてください。簡単なことにたどり着くまでに、私でさえ何時間も検索しなければなりませんでした。

@protocol とデリゲートで苦労しました。

チュートリアルを見つけました (現在は見つけることができません)。基本的に行うことは、nextViewController でプロパティを定義し、prevViewController からその値を設定することです

//nextViewController.h

@interface nextViewController
@property (nonatomic, strong) NSString *searchString;
@end

// prevController.h

import "NextViewController.h"
@property (weak, nonatomic) PrevViewController *prevViewController;

// prevController.m
-someMethodFromWhereYouWantToSetTheProperty {
   prevViewController.searchString = self.yourvalue;
}

編集:

私は ios dev の初心者であることをすでに指摘しました。したがって、これが正しい方法なのか、それとも欠点があるのか​​ はよくわかりません。

于 2012-09-05T05:34:58.933 に答える
0

ビュー コントローラー スタック (ナビゲーション スタック) の前のビューにデータを送信するには、次のスニペットを使用できます。

int previous = self.navigationController.viewControllers.count - 2;
UIViewController *controller = [self.navigationController.viewControllers objectAtIndex:previous];
controller.arrayProperty = @[];  //array element to pass into whatever specified property
[self.navigationController popViewControllerAnimated:YES];

もちろん、UIViewController を以前のビュー クラス名に変更し、次のように以前のビュー コントローラー ヘッダー ファイルにプロパティが作成されていることを確認してください。

@property(strong)NSArray *arrayProperty;
于 2012-09-04T19:59:11.743 に答える
-1

Braydens の方法は確かに素晴らしいですが、シングルトンを作成することをお勧めします。それは素晴らしく、扱いやすいです。シングルトンにプロパティを保存させます。プロパティが nil かどうかをいつでも確認することもできます。

于 2012-09-04T20:08:07.520 に答える