-1

私は webService を使用して JSON 形式のデータを取得するアプリケーションを作成しています...データを取得し、それらを解析してオブジェクト NSArray にします...そしてそれを使用します..正常に動作します...
今、ユーザーがボタンをクリックして別の Uiview に送信する必要があります...クリックしたオブジェクトに関する詳細データが含まれています..
問題はここにあります...もう一度リクエストしてサーバーから結果をダウンロードしたくありません...私はすでに行ったので...私が望むのは、最初のUIViewControllerにあるNSArrayにアクセスすることだけです。

4

5 に答える 5

1

AnotherView.h に別のプロパティを追加できます。

@property (nonatomic, retain) NSArray *jsonData;

AnotherView.m で合成します。InitialView から AnotherView を呼び出す場合は、InitialView で取得したデータを jsonData に設定できます。

于 2012-05-11T08:15:24.947 に答える
0

NSArrayを保持する2番目のViewControllerで新しいプロパティを定義し、最初の配列を2番目のViewControllerに渡してから表示することができます。

于 2012-05-11T08:29:35.403 に答える
0

データを前方または後方に送信するかどうかを概説していません。後者の場合、プロトコルとデリゲート (独自のプロトコルを定義する) を実装する必要がありますが、前のケースでは、他のクラスでアクセスするオブジェクトのプロパティを作成するだけで済みます。Web サービスの場合、MVC アーキテクチャの規範に準拠している場合は、プロトコルとデリゲートを使用することをお勧めします。

于 2012-05-11T08:34:50.867 に答える
0

次のように、他のView Controllerでカスタム初期化子を作成します。

#import <UIKit/UIKit.h>

@interface OtherViewController : UIViewController 

@property (nonatomic, strong) NSArray *myArray;

- (id)initWithArray:(NSArray *)anArray;

@end

次に、次のように実装します。

#import "OtherViewController.h"

@implementation OtherViewController
@synthesize myArray=_myArray;

- (id)initWithArray:(NSArray *)anArray {
    if (!(self = [self initWithNibName:@"OtherViewController" bundle:nil]))
        return nil;

    if (!anArray) {
        @throw [NSException exceptionWithName:@"OtherViewControllerBadInitCall" reason:@"array is nil" userInfo:nil];
    }

    _myArray = anArray;


    return self;
}

//...
@end

次に、次のようにコントローラーを初期化して表示できます。

OtherViewController *otherViewController = [[OtherViewController alloc] initWithArray:greatJSONArray];
[self.navigationController pushViewController:otherViewController animated:YES];

ほらね。

于 2012-05-11T08:17:02.917 に答える