2016-09-13 73 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