2012-10-26 63 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需要繪製一個單元格時做了太多工作。