2012-10-26 31 views
0

嗨,我已经创建了一个隐藏和显示某些网站的观点取决于该选项卡上的自定义标签栏你对我目前加载的操作队列中的所有三个Web视图,然后使它们visable和invisable取决于选定的选项卡。问题是它使加载缓慢,滚动,我得到一个收到内存警告的iOS UIWebViews中之间的切换导致内存警告

继承人是我迄今所做

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    NSArray *subviews = [cell subviews]; 
     for(UIView *subview in subviews) if([subview tag] == 4) [subview removeFromSuperview]; 

     UIView *loadingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 800)]; 
     UIView *sendingMessage = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
     UIActivityIndicatorView *sendingSpinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(25, 15, 50, 50)]; 
     UILabel *sendingLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 65, 100, 20)]; 

     int sendingViewLeft = (loadingView.frame.size.width/2) - (sendingMessage.frame.size.width/2); 
     int sendingViewTop = 160 - (sendingMessage.frame.size.height/2); 

     loadingView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; 

     sendingMessage.frame = CGRectMake(sendingViewLeft, sendingViewTop, sendingMessage.frame.size.width, sendingMessage.frame.size.height); 
     sendingMessage.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; 
     sendingMessage.layer.cornerRadius = 10; 

     sendingSpinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; 

     sendingLabel.textColor = [UIColor whiteColor]; 
     sendingLabel.backgroundColor = [UIColor clearColor]; 
     sendingLabel.text = @"Loading..."; 
     sendingLabel.textAlignment = UITextAlignmentCenter; 
     sendingLabel.font = [UIFont boldSystemFontOfSize:12]; 
     sendingLabel.shadowColor = [UIColor blackColor]; 
     sendingLabel.shadowOffset = CGSizeMake(0, -1); 

     [sendingSpinner startAnimating]; 
     [sendingMessage addSubview:sendingLabel]; 
     [sendingMessage addSubview:sendingSpinner]; 
     [loadingView addSubview:sendingMessage]; 

     [loadingView setTag:4]; 

     cell.textLabel.text = @""; 


    if([self.webViewStatus isEqualToString:@"FALSE"]){ 
     [cell addSubview:loadingView]; 
     self.tableView.userInteractionEnabled = NO; 
    } else { 
     [cell addSubview:self.fixturesWebView]; 
     [cell addSubview:self.resultsWebView]; 
     [cell addSubview:self.tablesWebView]; 
     self.tableView.userInteractionEnabled = YES; 
    } 


    if(self.selectedTabNumber == 1){ 
     self.fixturesWebView.alpha = 1; 
     self.resultsWebView.alpha = 0; 
     self.tablesWebView.alpha = 0; 
    } 

    if(self.selectedTabNumber == 2){ 
     self.fixturesWebView.alpha = 0; 
     self.resultsWebView.alpha = 1; 
     self.tablesWebView.alpha = 0; 
    } 

    if(self.selectedTabNumber == 3){ 
     self.fixturesWebView.alpha = 0; 
     self.resultsWebView.alpha = 0; 
     self.tablesWebView.alpha = 1; 

    } 

    return cell; 
} 
+0

而究竟什么是这里的问题? – Josiah

回答

0

首先,你应该考虑创建一个自定义单元格,而不是创建它在tableview数据源。其次,当你得到的WebView内容,请考虑使用异步调用,避免锁窗口。这也可以在一个块中完成。如果你在自定义单元格上写代理方法,你可以让桌面视图知道什么时候加载或者没有加载等。

但是看起来你在tableview需要绘制一个单元格时做了太多工作。