0

私は Xcode 4.3.2 & iOS 5.1 シミュレーターを使用しています。私のプロジェクトでは、testingViewController と detailView の 2 つのビュー コントローラーを使用しています。testingViewController で tableViewCell を選択したら、detailView で NSString の値を設定したいと考えています。

そのために、次のコードを使用しました:

testingViewController.h

testingViewController.h

testingViewController.m

testingViewController.m

detailView.h

detailView.h

detailView.m

detailView.m

wordNamewordMeaningコンソールの両方で null 値を取得します。

誰にも解決策がありますか?前もって感謝します!

4

5 に答える 5

3

testingViewControllerとの間にストーリーボード セグエがある場合は、detailViewtestingViewControllerメソッドprepareForSegue:で行を変更する必要があります

detailView *dVw = [[detailView alloc] init]; 

detailView *dVw = (detailView *)segue.destinationViewController;

detailView.hまた、ファイルを変更することをお勧めします

@property (nonatomic, assign) NSString *YOUR_STRING; 

@property (nonatomic, copy) NSString *YOUR_STRING;
于 2012-07-25T13:58:57.293 に答える
1

クラス間でデータを共有するためにこれを書きました。お役に立てば幸いです。

于 2012-07-25T14:01:14.453 に答える
1

使用する

[[segue destinationViewController] setWordMeaning:meaningString];
[[segue destinationViewController] setWordName:wordTapped];

問題は、新しいオブジェクトを作成していることですdetailView

于 2012-07-25T13:58:42.263 に答える
0

割り当てではなく、プロパティを保持するように NSStrings を設定します。また、値を変更するときは、常に使用します

self.property = ...;

保持が行われるようにします。そうしないと、解放されて null または不正なアクセスが発生します。

于 2012-07-25T13:59:58.930 に答える
0

カスタム初期化メソッドを作成する

declare in .h file 

    -(id)initWithWordName:(NSString*)myWordName andWordMeaning:(NSString*)myWordMeaning;

    and in .m file

    -(id)initWithWordName:(NSString*)myWordName andWordMeaning:(NSString*)myWordMeaning
    {
       self = [super init];
       if(self)
       {
         self.wordName = myWordName;
         self.wordMeaning = myWordMeaning;
       }
       return self;
    }

また、NSString プロパティは割り当ての代わりにコピーする必要があります。detail.h ファイルを変更してください。

于 2012-07-25T14:01:00.437 に答える