Ios 将单元格添加到UITableView,但它们没有';我无法直观地显示,但我可以单击,它们可以工作

Ios 将单元格添加到UITableView,但它们没有';我无法直观地显示,但我可以单击,它们可以工作,ios,objective-c,uitableview,Ios,Objective C,Uitableview,将iOS6应用程序迁移到iOS7,这在以前是可行的。在6点,一切正常 在iOS7上,当向UITableView添加单元格时,它们不会直观地显示出来,但当我单击它们应该在的位置时,它们会像在那里一样工作 好像UIView没有重新绘制自己或其他东西。很奇怪 有人知道从哪里开始找吗 ==========更新========================= 执行递归描述我得到了这个 <UITableView: 0xf3cb000; frame = (0 0; 320 724); clips

将iOS6应用程序迁移到iOS7,这在以前是可行的。在6点,一切正常

在iOS7上,当向UITableView添加单元格时,它们不会直观地显示出来,但当我单击它们应该在的位置时,它们会像在那里一样工作

好像UIView没有重新绘制自己或其他东西。很奇怪

有人知道从哪里开始找吗

==========更新=========================

执行递归描述我得到了这个

   <UITableView: 0xf3cb000; frame = (0 0; 320 724); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x1ac3ef60>; layer = <CALayer: 0x1ac3e480>; contentOffset: {0, 0}>
  | <UITableViewWrapperView: 0x1ac3f230; frame = (0 0; 320 724); autoresize = W+H; layer = <CALayer: 0x1ac3f2a0>>
  |    | <TitDeleteGroupedTableViewCell: 0x1abddfb0; baseClass = UITableViewCell; frame = (0 208; 320 44); autoresize = W; layer = <CALayer: 0x1abddd00>>
  |    | <TitGroupedTableViewCell: 0x1ac80210; baseClass = UITableViewCell; frame = (0 120; 320 44); autoresize = W; layer = <CALayer: 0x1ac7ff50>>
  |    |    | <UITableViewCellScrollView: 0x1ac803a0; frame = (0 0; 320 44); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x1ac800d0>; layer = <CALayer: 0x1ac80570>; contentOffset: {0, 0}>
  |    |    |    | <UITableViewCellContentView: 0x1ac80a70; frame = (0 0; 285 44); gestureRecognizers = <NSArray: 0x1ac80bf0>; layer = <CALayer: 0x1ac80ae0>>
  |    |    |    | <UIImageView: 0x1abc9b70; frame = (0 42; 320 2); opaque = NO; userInteractionEnabled = NO; tag = 107; layer = <CALayer: 0x1abc9c70>>
  |    |    |    | <UITextField: 0x1ac80de0; frame = (10 12; 275 23); text = ''; clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x1abc65a0>; layer = <CALayer: 0x1ac80f20>>
  |    |    |    |    | <UITextFieldLabel: 0x1abc90d0; frame = (0 0; 275 22); text = 'Create  plan...'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1abc9170>>
  |    |    |    | <UIImageView: 0x1cd992b0; frame = (276 12; 20 21); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1cd99340>>
  |    | <TitGroupedTableViewCell: 0x1cf999b0; baseClass = UITableViewCell; frame = (0 44; 320 44); autoresize = W; layer = <CALayer: 0x1cf99710>>
  |    |    | <UITableViewCellScrollView: 0x1cf99b40; frame = (0 0; 320 44); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x1cf99890>; layer = <CALayer: 0x1cf99d10>; contentOffset: {0, 0}>
  |    |    |    | <UITableViewCellContentView: 0x1cf9a1f0; frame = (0 0; 320 44); gestureRecognizers = <NSArray: 0x1cf9a360>; layer = <CALayer: 0x1cf9a260>>
  |    |    |    | <UILabel: 0x1cf9a3a0; frame = (10 12; 295 20); text = 'blah'; clipsToBounds = YES; userInteractionEnabled = NO; tag = 105; layer = <CALayer: 0x1cf9a440>>
  |    |    |    | <UILabel: 0x1d297390; frame = (10 37; 295 0); text = ''; clipsToBounds = YES; userInteractionEnabled = NO; tag = 106; layer = <CALayer: 0x1d297250>>
  |    |    |    | <UIImageView: 0x165836c0; frame = (0 42; 320 2); opaque = NO; userInteractionEnabled = NO; tag = 107; layer = <CALayer: 0x165837d0>>
  |    | <TitGroupedTableViewCell: 0x1d295080; baseClass = UITableViewCell; frame = (0 0; 320 44); autoresize = W; layer = <CALayer: 0x1d24ee50>>
  |    |    | <UITableViewCellScrollView: 0x1d295210; frame = (0 0; 320 44); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x1d1f3a60>; layer = <CALayer: 0x1c5c4e40>; contentOffset: {0, 0}>
  |    |    |    | <UITableViewCellContentView: 0x1d295480; frame = (0 0; 320 44); gestureRecognizers = <NSArray: 0x1d28e4e0>; layer = <CALayer: 0x1d28df50>>
  |    |    |    | <UILabel: 0x1d295560; frame = (10 12; 295 20); text = 'Budget-Blah'; clipsToBounds = YES; userInteractionEnabled = NO; tag = 105; layer = <CALayer: 0x1d28e5f0>>
  |    |    |    | <UILabel: 0x1caaa710; frame = (10 37; 295 0); text = ''; clipsToBounds = YES; userInteractionEnabled = NO; tag = 106; layer = <CALayer: 0xdbcc210>>
  |    |    |    | <UIImageView: 0xd889590; frame = (0 42; 320 2); opaque = NO; userInteractionEnabled = NO; tag = 107; layer = <CALayer: 0xd827d80>>
  |    | <TitDeleteGroupedTableViewCell: 0x1abce730; baseClass = UITableViewCell; frame = (0 164; 320 44); autoresize = W; layer = <CALayer: 0x1abce6e0>>
  | <UIImageView: 0x1ac3ebb0; frame = (0 720; 320 3); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x1ac3ec90>>
  | <UIView: 0x1cda3300; frame = (0 88; 320 32); autoresize = W; layer = <CALayer: 0x1cda3360>>
  |    | <UIImageView: 0x1cda27d0; frame = (0 0; 320 32); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1cda2860>>
  |    | <UILabel: 0x1cda28f0; frame = (0 0; 320 32); text = 'MY PLANS'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x1cda2990>>
  |    | <UIButton: 0x1cda33b0; frame = (260 0; 60 32); opaque = NO; layer = <CALayer: 0x1cda34a0>>
  |    |    | <UIButtonLabel: 0x1cda3960; frame = (17 9; 26 14); text = 'EDIT'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1cda3a10>>
  | <UIImageView: 0x1ac3ed60; frame = (316 561; 3 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x1ac3ee40>>

| 
|    | 
|    | 
|    |    | 
|    |    |    | 
|    |    |    | 
|    |    |    | 
|    |    |    |    | 
|    |    |    | 
|    | 
|    |    | 
|    |    |    | 
|    |    |    | 
|    |    |    | 
|    |    |    | 
|    | 
|    |    | 
|    |    |    | 
|    |    |    | 
|    |    |    | 
|    |    |    | 
|    | 
| 
| 
|    | 
|    | 
|    | 
|    |    | 
| 
看起来所有的都是可见的,所以这个订单是正确的。因此,我猜当我单击一个空的tableviewcell(即没有数据),但只有一个没有分隔符的背景图像(即,它看起来平坦平滑)时,会发生什么。它仍然让我选择它,好像它是一个好的细胞

所以有两个问题

  • 提供给此tableview的字典的新数据要么没有数据,要么有数据,并且没有重新绘制

  • 它允许我点击空单元格,这是我不希望发生的


  • 尝试将断点放置在类似于
    didselectrowatinexpath
    的位置,然后键入
    po[self.tableView recursiveDescription]
    以查看视图层次结构的外观。您的单元格似乎是空的,或者布局是这样的,以至于内容不在屏幕上。然后返回报告,请为您的问题添加更多详细信息,例如代码和屏幕截图(它应该是什么样子,而您得到的是什么),等等。

    iOS 7中更改了UITableView的内部结构。这在任何地方都没有记录,因为只要使用公共API(将内容添加到
    contentView
    ,而不是直接添加到
    cell
    )就没有副作用


    如果从单元格内部执行类似于
    self.superview
    的操作,则会出现问题,因为视图层次结构不是由公共API定义的。

    滚动tableview时会发生什么情况?请检查对象的颜色。因为如果对象为白色,则ios7中单元格的默认颜色将设置为白色,这意味着在滚动对象时它将不可见。背景是自定义图像,而不是白色。发布表数据源方法的源代码我没有收到更新,因为您没有回复我。如注释线程中所述,您的
    recursiveDescription
    显示内容视图中不包含单元格的内容。这是您的解决方案解决的问题。单元格在那里,但您无法看到它们,因为子视图不在contentView中。