-3

私の実際の問題を解決するのを手伝ってくれるといいのですが。

ナビゲーションコントローラーを使用して新しいプロジェクトを設定しました。プロジェクトのテーブルビュー用に、「TableViewController.h」および「TableViewController.m」という新しいクラスを追加しました。

このクラスでは、NSStringが他のクラスからアクセスするために.haプロパティで次のように宣言しました。

    @property (strong, nonatomic) NSString *testString;

.mでは、次のように合成しました。

    @synthesize testString;

ここで、次のように設定します-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath-テーブルビューコントローラーのメソッドは次のとおりです。

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
     testString = @"Hello, World!";
    }

次に、セルをタップしたときに表示される次のビュー用の新しいUIViewControllerクラスを作成しました(これまでのところすべて機能します)。このUIViewControllerでは、「SecondView」と呼ばれ、TableViewControllerの.hファイルをインポートしました。さらに、SecondView.mにこのコードがあります。

    -(void) viewDidLoad
    {
     [super viewDidLoad];
     TableViewController *demoObject = [TableViewController alloc] init]
     NSLog (@"Teststring is: %@" [demoObject.testString]);
    }

シミュレータを起動すると、次の出力が得られます。テスト文字列は次のとおりです:(null)

TableViewControllerでtestStringをNSLogすると、「Hello、World」が表示されますが、SecondViewクラスに「転送」されて、必要な出力が生成されないのはなぜですか?

4

2 に答える 2

4

文字列をログインしていますviewDidLoad。これは、テーブルビューのdidSelectRowメソッドで設定されるずっと前に呼び出されます。また、使用する必要がありますself.testString = ...

于 2012-11-11T20:11:28.183 に答える
0

データが「転送」されることをどのように期待しますか?あなたはそれを渡す必要があります..tableView:didSelectCellAt:row(2番目のビューを押す場所)であなたは言わなければなりません:

2ndView.testString = self.testString;
于 2012-11-11T20:34:19.460 に答える