私のアプリには4つのビュー、つまり発行年>書籍>著者>著者の説明があります
このデータを xml からこの形式で取得しています。
では、どの本が選択され、どの著者が選択されたかに応じて、author desc に情報を渡すにはどうすればよいでしょうか?? この解析された要素のすべての詳細を含むオブジェクト名「result」を作成しました。解析は完全に完了しました。しかし、1 つのビューから 3 つ目のビューに選択した行によっては、情報を表示して転送することができません。
私のアプリには4つのビュー、つまり発行年>書籍>著者>著者の説明があります
このデータを xml からこの形式で取得しています。
では、どの本が選択され、どの著者が選択されたかに応じて、author desc に情報を渡すにはどうすればよいでしょうか?? この解析された要素のすべての詳細を含むオブジェクト名「result」を作成しました。解析は完全に完了しました。しかし、1 つのビューから 3 つ目のビューに選択した行によっては、情報を表示して転送することができません。
オブジェクト間でメッセージと値を送信するために一般的に使用される方法とパターンがいくつかあります。
メッセージや値を作成順にオブジェクトに渡す必要がある場合は、またはを使用しassignment
ますstraight call
。@obusemeと同様にすでに書いています。
メッセージや値を作成の逆順でオブジェクトに渡す必要がある場合は、を使用しますdelegation
。「逆順」とは、所有者がそのサブオブジェクトを作成し、そこからのコールバックを待つことを意味します。
また、という名前のパターンがありsingleton
ます。これを使用して、任意のオブジェクトからアクセスできます。
didSelectRowAtIndexPath で、画面にプッシュする新しいビュー コントローラーを作成するとき (uinavigationcontroller スタックを使用していると仮定すると、そのように聞こえます)、新しいコントローラーのプロパティとして「結果」を設定します。
私はあなたのviewcontrollersの名前を推測しています.また、私は結果に汎用ポインタ型「id」を使用しています.必要に応じて、これを結果の特定のクラスに置き換えることができます.
YearPublishedViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
BooksListViewController *booksVC = [[BooksListViewController alloc] initWithNibName:@"BooksListViewController" bundle:nil];
booksVC.result = self.result;
}
BooksListViewController.h
#import <UIKit/UIKit.h>
@interface BooksListViewController : UITableViewController
@property (nonatomic, retain) id result;
BooksListViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
AuthorListViewController *authorVC = [[AuthorListViewController alloc] initWithNibName:@"AuthorListViewController" bundle:nil];
authorVC.result = self.result;
}
AuthorListViewController.h
#import <UIKit/UIKit.h>
@interface AuthorListViewController : UITableViewController
@property (nonatomic, retain) id result;
AuthorListViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
AuthorDescriptionViewController *authorDescVC = [[AuthorDescriptionViewController alloc] initWithNibName:@"AuthorDescriptionViewController" bundle:nil];
authorDescVC.result = self.result;
}
AuthorDescriptionViewController.h
#import <UIKit/UIKit.h>
@interface AuthorDescriptionViewController : UIViewController
@property (nonatomic, retain) id result;
AuthorDescriptionViewController.m
//use self.result wherever you need it here
また、正しいメモリ管理のために、これらの各コントローラーの割り当て解除で「結果」を必ず解放してください。
1 番目のビューから 4 番目のビューに配列の値を渡し、次に View1 から View2 に、そこから View3 に、そこから View4 に値を渡すための inoder。Apple ガイダンスに従って値を渡すこの標準的な方法