-1

ResourcesTableViewControllerという名前のクラスにTableViewControllerを作成しています。私は次のクラスを作成しています:

ViewController.h:

@interface ViewController : UIViewController {
    ResourcesTableViewController *resourceTableViewController;

ViewController.m:

resourceTableViewController = [[ResourcesTableViewController alloc] initWithStyle:UITableViewStylePlain];
[resourceTableViewController setTableViewObject:localObject];

今、私はそれで作業することができ、私は電話をかけることができます

NSLog(@"%@ %@",resourceTableViewController,[resourceTableViewController tableViewObject]);

ViewController.mのいくつかの部分で(予想どおり)同じ出力

<ResourcesTableViewController: 0x749f1c0> tableViewObjectContent

。新しいTableViewをオンにするために、ストーリーボードに新しいビューへのポップオーバー付きのボタンを作成しました(トリガーされたセグエとして)。ただし、ボタンが押されてビューが表示されるとすぐに、新しいインスタンスが作成されます。不思議なことに、私は自分のクラスResourcesTableViewControllerのviewDidLoadを入れました:

NSLog(@"viewDidLoad: %@: %@", self, self.tableViewObject);

そしてそれは戻ってきています

<ResourcesTableViewController: 0x74bbcd0>: (null)

。別のメモリアドレス、別のインスタンス。以前に使用したインスタンスではなく、そのtableViewOjectを指定したインスタンスでもありません。作成して操作したresourceTableViewControllerに属するインスタンスからビューを呼び出すにはどうすればよいですか?オブジェクトresourceTableViewControllerと通信することで、その「古い」インスタンスにアクセスできますが、作成されたビューは、最初のオブジェクトに与えたオブジェクトを確実に利用しない、そのタイプの別のビューです。

4

1 に答える 1

0

テーブルビューの表示方法は、表示方法とその前の画面の内容によって異なります。通常、セグエを使用して、現在のコントローラー(ボタンを押したコントローラー)からテーブルビューに移行します。これを行うには、performSegueWithIdentifier:sender:を使用できます。ここで、identifierパラメーターは、IBでセグエに付けた名前です。ただし、1つのビューのボタンからテーブルビューコントローラーのビューにドラッグし、セグエのタイプに合わせてモーダルを選択することで、コードなしでそれを行うことができます。ボタンをクリックすると、そのテーブルビューが画面に表示されます。 。

ストーリーボードを使用している場合は、コードで初期化を割り当てないでください。セグエが新しいViewControllerをインスタンス化します。

于 2012-10-02T04:47:39.363 に答える