-2

ファイル編成

私のプロジェクトでは、アプリはViewControllerで起動し、サブビューとして追加することでテーブル(Tableクラス)内にロードされます(ViewController.h - [self.view addSubview: Table.tableView];)

Camera Class は詳細ビューなので、表の行をタップすると、Camara.xib が読み込まれます。ここまではすべて正常に動作します。

問題は、Camera.xib を閉じて ViewController.xib に戻ろうとすると発生します。Camera.xib は問題なく閉じますが、Table.xib を含む ViewController.xib に戻るのではなく、アプリはテーブルのみを読み込みます。 .xib であるため、ViewController.xib のビューに配置された残りのオブジェクトは表示されません。

私は何を間違っていますか?

前もって感謝します!!

コード:

表.m

- (void)viewDidLoad
{

    roomsArray = [[NSMutableArray alloc] initWithObjects:nil];
    [super viewDidLoad];

}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // my code...

    Camara *camara = [[Camara alloc] initWithNibName:@"Camara" bundle:nil];
    [self presentViewController:camara animated:YES completion:nil];

}

カマラ.m

-(IBAction)cancel:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}

ViewController.m

- (void)viewDidLoad
{

    table = [[Table alloc] initWithNibName:@"Table" bundle:nil];

    [windows.tableView reloadData];
    [self.view addSubview:windows.tableView];
    windows.tableView.transform = CGAffineTransformMakeTranslation(0, 44);

    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

}

4

3 に答える 3

0

まず第一に、あなたの質問には反対票が投じられたことを述べなければなりません。おそらく、英語が下手で、最初は解決に必要な情報が不足していたためです。

[super viewDidLoad]次に、 などのスーパー コールは常にコード ロジックの前に来る必要があることを強調したいと思います。それらを各メソッドの先頭に移動します。

なぜあなたが問題を抱えているのかについて。

ビュー コントローラがメモリ内に作成されるたびに、viewDidLoad メソッドが実行され、それが表示される直前に (オーバーロードされていない限り親で) viewWillAppear メソッドが実行されます。今後ビューを表示しようとすると、viewWillAppear が呼び出されます。

解決策 次のコードを移動します

[windows.tableView reloadData];
[self.view addSubview:windows.tableView];
windows.tableView.transform = CGAffineTransformMakeTranslation(0, 44);

の中へ

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [windows.tableView reloadData];
    [self.view addSubview:windows.tableView];
    windows.tableView.transform = CGAffineTransformMakeTranslation(0, 44);
}
于 2013-08-26T19:11:03.277 に答える