如何在从单独的线程返回后在UITableView上设置内容插入?
以下是一些获取我正在做的事情的要点的代码,也可以在这个问题的范围之外提供建议。
如果没有广告可用,我的主要目标是折叠webview将进入的区域(由contentInset创建的表格上方的区域)。
//In View did Load
[NSThread detachNewThreadSelector:@selector(getBannerAdContent) toTarget:self withObject:nil];
-(void)getBannerAdContent
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://192.168.0.18:83/PhotoGalleryService.svc/LoadBannerAd/"]];
[self performSelectorOnMainThread:@selector(loadBannerAd:) withObject:html waitUntilDone:NO];
[pool release];
}
-(void)loadBannerAd:(NSString*)html
{
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 2, 300, 40)];
[webView loadHTMLString:html baseURL:nil];
webView.delegate = self;
webView.scalesPageToFit = NO;
webView.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);
[self.view addSubview:webView];
[webView release];
UITableView *myTableView = (UITableView*)[self.view.subviews objectAtIndex:0 ];
//The following line is doing nothing.
myTableView.contentInset = UIEdgeInsetsMake(44,0.0,0,0.0);
}
非常感谢您给我的任何帮助。
编辑: 更彻底的解释......
在我的视图中,我加载了一个单独的线程。此线程从我设置的服务加载html,然后在webview上设置它。然而,正如我正在逐步完成,在它到达行之前
myTableView.contentInset = UIEdgeInsetsMake(44,0.0,0,0.0);
表视图已加载,然后上面的行无效。
干杯,
答案 0 :(得分:5)
contentInset设置插入大小,但不滚动tableview以显示它。设置contentInset后,如果要向上滚动以显示表视图的顶部,请设置contentOffset。
myTableView.contentOffset = CGPointZero;
答案 1 :(得分:0)
对于Swift5和UITableView
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if shouldAddContentInset {
tableView.contentInset = UIEdgeInsets(top: 100, left: 0, bottom: 0, right: 0)
tableView.contentOffset = CGPoint(x: 0, y: -tableView.contentInset.top)
}
}
然后通过某些回调函数或委托:
func gotResponseFromSomewhere() {
shouldAddContentInset = true
viewDidLayoutSubviews()
}