2017-10-10 89 views
0

在表格視圖中有很多行,當我點擊任何表格視圖行時,它會像上面的例子一樣展開。 Example如何在單擊特定的UITableView行後顯示WebView數據?

所以,通過這種方式我想顯示一些其他數據,我不想導航到下一個視圖。

這裏的另一點是,當它展開後點擊特定的行,然後在這裏我想顯示Web視圖。在我的項目中,一些數據是消息的一些文本行,或者可能是一個網頁。 因此,它也必須顯示網頁視圖,它必須根據數據或網頁內容動態調整tableview單元格。

像這樣,如果點擊任何單元格,它必須展開並顯示網頁視圖。即使有時它不包含任何網絡數據可能包含一些信息,那麼它必須顯示網絡視圖。

這是我目前的項目示例。我按照以下方式顯示數據/信息。 這裏是我的表格視圖(見圖1),點擊行後會顯示一個像這樣的彈出窗口(見圖2) - 它包含一些如此顯示的消息,圖像3 - 它包含web數據/ webview。

如果有人知道解決方案,請發佈解決方案。謝謝..! enter image description here

這裏是我的didSelectRowAtIndexPath方法方法,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSDictionary *finaldic=[mutableArray objectAtIndex:indexPath.row]; 
    [self showWebview:@"" body:[finaldic objectForKey:@"body"] popupStyle:CNPPopupStyleActionSheet]; 
} 

和方法的WebView,

-(void)showWebview:(NSString*)tittle body:(NSString*)body popupStyle:(CNPPopupStyle)popupStyle{ 

    NSMutableParagraphStyle *paragraphStyle = NSMutableParagraphStyle.new; 
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 
    paragraphStyle.alignment = NSTextAlignmentCenter; 

    NSAttributedString *title = [[NSAttributedString alloc] initWithString:tittle attributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:14], NSParagraphStyleAttributeName : paragraphStyle}]; 

    UILabel *titleLabel = [[UILabel alloc] init]; 
    titleLabel.numberOfLines = 0; 
    titleLabel.attributedText = title; 

    // UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 40)]; 
    // customView.backgroundColor = [UIColor hx_colorWithHexString:@"#00aeef"]; 
    //  [customView addSubview:titleLabel]; 

    UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height/2)]; 
    // webview.scalesPageToFit = YES; 
    webview.autoresizesSubviews = YES; 
    //webview.delegate=self; 
webview.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth); 

    NSRange range = [body rangeOfString:@"<body"]; 

    if(range.location != NSNotFound) { 
     // Adjust style for mobile 
     float inset = 40; 
     NSString *style = [NSString stringWithFormat:@"<style>div {max-width: %fpx;}</style>", self.view.bounds.size.width - inset]; 
     body = [NSString stringWithFormat:@"%@%@%@", [body substringToIndex:range.location], style, [body substringFromIndex:range.location]]; 
    } 
    [webview loadHTMLString:body baseURL:nil]; 


    self.popupController = [[CNPPopupController alloc] initWithContents:@[titleLabel,webview]]; 
    self.popupController.theme = [CNPPopupTheme defaultTheme]; 
    self.popupController.theme.popupStyle = popupStyle; 
    self.popupController.delegate = self; 
    [self.popupController presentPopupControllerAnimated:YES]; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 

} 
-(void)webViewDidStartLoad:(UIWebView *)webView{ 

} 
+0

你使用的是目標c還是swift? –

+1

添加您的嘗試代碼。 –

+0

@ R.Mohan這是Objective c的代碼。 –

回答

1

檢查我的下面的代碼,它會幫助你..!我根據你的代碼創建。

這是您的didSelectRowAtIndexPath方法方法,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 



    //user taps expnmade view 

    if(selectedIndex == indexPath.row) 
    { 

     selectedIndex =-1; 
     [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade ]; 
     return; 
    } 

    //user taps diff row 
    if(selectedIndex != -1) 
    { 

     NSIndexPath *prevPath= [NSIndexPath indexPathForRow:selectedIndex inSection:0]; 
     selectedIndex=(int)indexPath.row; 

     [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:prevPath, nil] withRowAnimation:UITableViewRowAnimationFade ]; 
    } 


    //user taps new row with none expanded 
    selectedIndex =(int)indexPath.row; 
    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade ]; 

} 

寫這個方法,

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    if(selectedIndex == indexPath.row) 
    { 
     // return 200; 

     UITableViewCell *cell = [self tableView: tableView cellForRowAtIndexPath: indexPath]; 
     return cell.bounds.size.height; 
    } 
    else 
    { 
     return 90; 
    } 
} 

和的cellForRowAtIndexPath方法,添加以下代碼

NSDictionary *finaldic=[mutableArray objectAtIndex:indexPath.row]; 



    NSString *body= [finaldic objectForKey:@"body"]; 
    NSRange range = [body rangeOfString:@"<body"]; 

    if(range.location != NSNotFound) { 
     // Adjust style for mobile 
     float inset = 40; 
     NSString *style = [NSString stringWithFormat:@"<style>div {max-width: %fpx;}</style>", self.view.bounds.size.width - inset]; 
     body = [NSString stringWithFormat:@"%@%@%@", [body substringToIndex:range.location], style, [body substringFromIndex:range.location]]; 
    } 
    [cell.webView loadHTMLString:body baseURL:nil]; 

我希望,這會爲工作您..!

+0

謝謝...!這對我來說是... ...! –

0

它是簡單的只是設計兩個不同的表格視圖單元。一個是Simple和其他擴展單元。當你點擊簡單單元格時,更改特定的單元格以展開單元格。

相關問題