2016-09-13 2 views
0

私はUITableViewの奇妙な動作に直面しています。私はUIViewのView Controllerを持っていますが、それはビューと呼ばせてください。UITableViewのコンテンツがなくなった

UIView内部Iは、ビューB呼ばUIViewControllerから別のビューを、呼んでいます。 Bインサイド

HomeViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIView *B = [[BViewController alloc]init].view; 

    [self.A addSubview:B]; 
} 

、私はUITableViewCを持っています。

BViewController.m

- (void) viewDidLoad 
{ 
    C.delegate = self; 
    C.dataSource = self; 
    [self.view addSubview:C]; 
} 

このUITableView

が正しく読み込まれているが、私はただ画面上でタップすると、テーブルの内容のすべてがなくなっています。ただ空のテーブルが残っています。

+0

これは、ビューコントローラの格納を行う正しい方法ではありません。 https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html – dan

+0

の「コンテンツへの子ビューコントローラの追加」を参照してください。どうもありがとうございました! :) –

答えて

0

あなたのビューコントローラBでは、タイプAのプロパティを作成し、これをインスタンス化してインスタンスAを設定し、そのデリゲートプロパティをテーブルビュー 'datasourceとselfの代わりにdelegateに設定します。 Bのviewdidloadでは、デリゲートとデータソースをBのインスタンスを意味するselfとして設定しています。したがって、テーブルビューはviewcontrollet Aに表示されます。したがって、Aのインスタントはtableviewのデリゲートになります。だから、tableviewのデリゲートとデータソースをvc Aでselfに設定するか、上記のlines.Orで説明したように、または、childviewcontrollerとしてvcを追加する必要があります。

+0

あなたの答えをありがとうが、残念ながら私はあなたが書いたことを理解していませんでした。私はUIViewをA View Controller Bの中に作成し、それをUITableViewのデリゲートとして設定する必要がありますか?申し訳ありませんが、私は本当にあなたが言ったことについて混乱しています。 :( –

+0

あなたのviewcontroller(テーブルビューを提示しています)は 'tableview'の' delegateとdatasource'でなければなりません。 'A'は' B'ではなく 'A'です。 – Lion

0

View Containersの公式ドキュメントに続いて、私の問題は解決されました。

関連する問題