Установка contentInset в UITableView после возвращения из другого потока - PullRequest
3 голосов
/ 27 января 2011

Как я могу установить вставку содержимого в UITableView после возвращения из отдельного потока?

Вот некоторый код, чтобы понять суть того, что я делаю, не стесняйтесь давать предложения и за рамками этого вопроса.

Моя главная цель - свернуть область, в которую войдет веб-представление (область над таблицей, созданной 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);
}

Любая помощь, которую вы мне можете оказать, будет очень признательна.

EDIT: Немного более подробного объяснения ...

На мой взгляд, нагрузка у меня зажглась отдельным потоком. Этот поток загружает HTML из службы, которую я настроил, а затем устанавливает ее в веб-представлении. Однако пока я прохожу, прежде чем он доберется до линии

myTableView.contentInset = UIEdgeInsetsMake(44,0.0,0,0.0);

Представление таблицы уже загружено, и тогда приведенная выше строка не имеет никакого эффекта.

Приветствия

1 Ответ

5 голосов
/ 14 февраля 2011

contentInset устанавливает размер вставки, но не прокручивает ваш просмотр таблицы, чтобы отобразить его. После установки contentInset установите contentOffset, если вы хотите, чтобы он прокручивался вверх, чтобы показать верхнюю часть табличного представления.

myTableView.contentOffset = CGPointZero;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...