Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从不同线程返回后在UITableView上设置contentInset_Objective C_Multithreading_Ios_Uitableview - Fatal编程技术网

Objective c 从不同线程返回后在UITableView上设置contentInset

Objective c 从不同线程返回后在UITableView上设置contentInset,objective-c,multithreading,ios,uitableview,Objective C,Multithreading,Ios,Uitableview,从单独的线程返回后,如何在UITableView上设置内容插入 这里有一些代码来了解我正在做的事情的要点,也可以在这个问题的范围之外提供建议 我的主要目标是,如果没有可用的广告,则折叠webview将进入的区域(contentInset创建的表上方的区域) //In View did Load [NSThread detachNewThreadSelector:@selector(getBannerAdContent) toTarget:self withObject:nil]; -(voi

从单独的线程返回后,如何在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);
该表视图已加载,因此上面的行无效


干杯,

内容插图设置插图大小,但不会滚动您的tableview来显示它。设置contentInset后,如果希望contentOffset向上滚动以显示表格视图的顶部,请设置contentOffset

myTableView.contentOffset = CGPointZero;

适用于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()
}

你的问题是什么?您的代码似乎设置了
contentInset
,因此我不明白您需要什么帮助。当我脱离单独的线程时,contentInset没有任何影响。因此,下面的//行什么也没做。我不知道它是否只是iOS7,但是在有顶部插入时将contentOffset设置为0不会滚动到视图的顶部。要实现滚动到顶部的效果,必须将偏移量设置为CGPointMake(0,-scrollView.contentInset.top)