IBOutlet查看意外行为

时间:2015-04-15 07:38:21

标签: ios iboutlet

我在视图控制器中有tableView Outlet并在下面编写代码,我的表视图现在再次显示在屏幕上。有人可以解释这种奇怪的行为。我不明白出了什么问题。我的意思是表视图应该再次显示,因为我再次将tableview添加到其superview。

@interface

中的

@property (weak, nonatomic) IBOutlet UITableView *tableView;

在@implementation中

 - (void)viewDidLoad {
     [super viewDidLoad];

     UIView* table = self.tableView;
     [table removeFromSuperview];
     [self.view addSubview:table];
}

1 个答案:

答案 0 :(得分:0)

首先,您不需要将tableView放在UIView中,您可以立即使用tableView上的查看方法(就像按钮,标签一样)以及更多)。

现在最重要的是,我说如果没有更多的信息,我们真的无法说出错误:

  • 您的tableView是如何创建的?
  • 它有实际尺寸吗? (它的大小不是0,0吗?)
  • 它有颜色还是透明?
  • 您是否正确设置了delegatedatasource以确保其能够正确显示数据?
  • 如果是,您是否给它显示了一些数据?

如果您已经完成了所有这些并且您可以通过您的tableview进行调试并正确查看所有内容,那么请分享您的更多工作,以便我们进行调查。如果没有,我建议你查看我的清单并按照它的方式工作:)

编辑:经过调查:

我现在尝试使用自己的应用程序,因为self.view不是可见视图,当我向其添加内容时,它只是在另一个视图下(在上面)。

步骤:

  1. 您的视图就在那里,很好,从界面构建器创建并正确设置在视图中的任何内容
  2. 您删除该视图
  3. 您将其作为子视图添加到self.view,因此落后于您拥有的大型集合视图。 (或任何真的。)
  4. 签入您的View Hierarchy调试器,您可能会注意到您的tableview背后隐藏着其他东西。

    我试过了:

    UIView * view = [[UIView alloc] initWithFrame:CGRectMake(10,10,100,100)]; view.backgroundColor = [UIColor redColor];

    [self.view addSubview:view];

    You can see the red square behind my collection view

    要提起它,你可以尝试

    [self.view bringSubviewToFront:view];
    

    我只是将它添加到我的最顶层视图中,而不是self.view,而不是 [self.collectionview addSubview:view]; ,它就像魅力一样。

    {{1}}

    这意味着我的观点没有隐藏或破坏,只是添加到错误的子视图中