2016-09-13 41 views
0

我正面臨UITableView的奇怪行爲。我有一個視圖控制器與UIView,我們稱之爲視圖AUITableView內容不見了

UIView一個我打電話從UIViewController另一種觀點認爲,所謂的觀點

HomeViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 

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

    [self.A addSubview:B]; 
} 

內部,我有一個UITableViewÇ

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的實例,並將該委託屬性設置爲您的表視圖'數據源和委託而不是自己。因爲在B的viewdidload中,您將委託和數據源設置爲self,這意味着B的實例,並且您的表視圖將顯示在viewcontrollet A上。因此,A的即時會是tableview的委託。所以在vc A中將tableview的委託和數據源設置爲self,或者像我在上面提到的那樣。或者你應該添加vc作爲childviewcontroller。

+0

謝謝你的回答,但不幸的是我不明白你寫的是什麼。我是否需要在View Controller B中創建UIView A並將其設置爲UITableView的委託?對不起,但我真的很困惑你說什麼。 :( –

+0

你的viewcontroller(這是呈現tableview)必須是'tableview'的'委託和數據源'。在你的情況是'A'而不是''B,因爲你在viewcontroller'A'上顯示你的tableview! – Lion