Как найти индикатор активности в UITableViewCell при завершении нескольких запросов UIWebView? - PullRequest
0 голосов
/ 13 ноября 2018

Я довольно новичок в программировании на Objective-C и iOS.

У меня есть SummaryUITableViewCell (пользовательский класс, наследующий от UITableViewCell), который содержит индикатор активности (loadingSpinner) и UIWebView.(webView).

Мое приложение получает список URL-адресов для загрузки, а затем представляет табличное представление, по одной ячейке на URL-адрес.

В cellForRowAtIndexPath я запускаю анимацию для загрузкиspinner и call cell.webView loadRequest:URL.

Все работает нормально, и webViewDidFinishLoad вызывается один раз для URL (на данный момент в нем есть только оператор NSLog).Я не могу понять, как найти соответствующий loadingSpinner, чтобы я мог остановить анимацию и скрыть ее.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы хотите, чтобы каждый из ваших SummaryUITableViewCell реализовал UIWebViewDelegate и обрабатывал вызов webViewDidFinishLoad самостоятельно.Тогда вы можете легко прятать счетчики каждый раз, когда загружается UIWebView.Вот один из способов реализовать SummaryUITableViewCell.

SummaryTableViewCell.h

#import <UIKit/UIKit.h>

@interface SummaryTableViewCell : UITableViewCell <UIWebViewDelegate>

@end

SummaryTableViewCell.m

#import "SummaryTableViewCell.h"

@interface SummaryTableViewCell ()

// Keep references to our spinner and webview here
@property (nonatomic, strong) UIActivityIndicatorView *spinner;
@property (nonatomic, strong) UIWebView *webView;

@end

@implementation SummaryTableViewCell

- (instancetype)initWithUrl:(NSString *)url {
    self = [super init];
    if (self) {
        [self setup:url];
    }
    return self;
}

- (void)setup:(NSString *)url {
    // Add Webview
    self.webView = [[UIWebView alloc] initWithFrame:[self frame]];
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
    [self.webView setAlpha:0];

    // Set the cell as the delegate of the webview
    [self.webView setDelegate:self];
    [self addSubview:self.webView];

    // Add Spinner
    self.spinner = [[UIActivityIndicatorView alloc] init];
    [self addSubview:self.spinner];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    // The web view loaded the url so we can now hide the spinner and show the web view
    [self.spinner setAlpha:0];
    [self.webView setAlpha:1];
}

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