UITableView 的子视图永远不会出现
Posted
技术标签:
【中文标题】UITableView 的子视图永远不会出现【英文标题】:UITableView's subview never shows up 【发布时间】:2014-09-11 13:29:59 【问题描述】:我正在尝试向UITableView
添加子视图(是的,不是UITableViewCell
,而是UITableView
)。它永远不会显示出来。起初我以为我添加得太早了,它被细胞覆盖了,但事实并非如此。当所有单元格都已添加时,我尝试延迟添加它,我尝试将它放在前面,我尝试将视图添加到 tableview 的子视图,但一切都是徒劳的,它永远不会出现。这是我的代码:
func delay(delay:Double, closure:()->())
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
override func viewDidAppear(animated: Bool)
super.viewDidAppear(animated)
func c()
var v:UIView = UIView(frame:CGRectMake(0.0, 0.0, 40.0, 40.0))
v.backgroundColor = UIColor.greenColor()
v.center = CGPointMake(40.0, 40.0)
tableView!.addSubview(v)
tableView!.bringSubviewToFront(v)
delay(5.0, closure: c)
有什么想法吗?这个问题显然与 Swift 有关,因为在 Objective-C 中它不会重现
【问题讨论】:
您的代码对我有用(绿色视图在 5 秒延迟后显示)。你确定 tableView 不是 nil 吗?如果我摆脱了延迟并将您在 func c() 中的代码移动到 viewDidLoad (在 Swift 中),它也可以工作。 @rdelmar 嗯,这很有趣。我 100% 确定 table view 不是 nil,好的,谢谢 【参考方案1】:首先
我在UITableViewController
中尝试这个
- (void)viewDidLoad
[super viewDidLoad];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
view.backgroundColor = [UIColor redColor];
[self.view addSubview:view];
有效
第二
我注意到您使用CGRectMake(0.0, 0.0, 40.0, 40.0)
添加了一个视图。因此,如果您的视图控制器中有一个视图,则该视图可能位于导航栏下方
【讨论】:
可能是 Swift 的问题,因为 Objective-C 工作正常以上是关于UITableView 的子视图永远不会出现的主要内容,如果未能解决你的问题,请参考以下文章
UITableView,如何修复页脚,使其在滚动时永远不会向上或向下移动?