0

私のアプリには4つのビュー、つまり発行年>書籍>著者>著者の説明があります

このデータを xml からこの形式で取得しています。

では、どの本が選択され、どの著者が選択されたかに応じて、author desc に情報を渡すにはどうすればよいでしょうか?? この解析された要素のすべての詳細を含むオブジェクト名「result」を作成しました。解析は完全に完了しました。しかし、1 つのビューから 3 つ目のビューに選択した行によっては、情報を表示して転送することができません。

4

3 に答える 3

1

オブジェクト間でメッセージと値を送信するために一般的に使用される方法とパターンがいくつかあります。

  1. メッセージや値を作成順にオブジェクトに渡す必要がある場合は、またはを使用しassignmentますstraight call@obusemeと同様にすでに書いています。

  2. メッセージや値を作成の逆順でオブジェクトに渡す必要がある場合は、を使用しますdelegation。「逆順」とは、所有者がそのサブオブジェクトを作成し、そこからのコールバックを待つことを意味します。

  3. また、という名前のパターンがありsingletonます。これを使用して、任意のオブジェクトからアクセスできます。

于 2012-06-02T14:18:34.030 に答える
1

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

また、正しいメモリ管理のために、これらの各コントローラーの割り当て解除で「結果」を必ず解放してください。

于 2012-06-02T13:47:14.187 に答える
0

1 番目のビューから 4 番目のビューに配列の値を渡し、次に View1 から View2 に、そこから View3 に、そこから View4 に値を渡すための inoder。Apple ガイダンスに従って値を渡すこの標準的な方法

于 2012-06-02T13:23:53.350 に答える