0

私がこれまでに行ったこと:

私はxcode 4.2を使用しています。ImageView を含む UITableView を作成しました。UITableView は、ファイル MyTableViewController.m/.h を持つクラス MyTableViewController を使用します。_bgimageview という IBOutlet 変数を作成しました。次に、ストーリーボードの接続インスペクターで、ImageView をこの _bgimageview 変数に接続しました。MyTableviewController.m の viewDidLoad 関数で、背景画像を _bgimageview に設定しました。シミュレーターを実行し、いくつかのタブをクリックして MyTableViewController にアクセスすると、背景画像が表示されます。これまでのところ、物事はうまく機能しています。

問題

再帰ツリーの構築にも成功しましたが、問題は、ツリーのルート レベルの後にバックゴーンド イメージが失われることです。理由はわかっていると思いますが、修正方法がわかりません。次のように、行クリックごとに新しい MyTableViewController をインスタンス化します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
        MyTableViewController *childView = [[MyTableViewController alloc] init];
        childView._menu = children; // an NSDictionary of children
        [self.navigationController pushViewController:childView animated:YES]; 
}

前述のように、viewDidLoad 関数で背景画像の IBOutlet 変数を設定します。しかし、その IBOutlet 変数は、Storyboard 接続を介して ImageView にリンクされています。ルート レベルより下のツリー レベルで、新しい MyTableViewControllers をプログラムでインスタンス化するため、背景画像の IBOutlet 変数と、ストーリーボードに記載されている実際の UIImageView との関係が失われている可能性があります。

これが問題であり、階層的に使用されている場合に背景画像を MyTableViewController に追加する方法を教えてください。

4

1 に答える 1

2
MyTableViewController *childView = [[MyTableViewController alloc] init];

この行は、ストーリーボードを参照せずにビュー コントローラーの新しいインスタンスを作成します。したがって、どのコンセントにも接続されません。テーブル ビューはデフォルトで作成および接続されるため、おそらく問題ありませんが、それ以外は接続されません。

これは、イメージ ビュー アウトレットを viewDidLoad に記録することで確認できます。これは nil になります。

セグエをテーブルの行から同じView ControllerのView Controllerオブジェクトにドラッグして、再帰スタックを作成する必要があります。

ここに画像の説明を入力

Lvsti がコメントで指摘しているように、任意のパラメーターをprepareForSegue:sender:

于 2012-05-07T20:41:18.193 に答える