3

私はこれが死ぬほど求められていることを知っており、このトピックで見つけたすべてのスレッドを読んだことを保証します. これまでのところ、何もうまくいきませんでした。これが私がこれまでに持っているものです... 2000年の高さが少しばかげていることは理解していますが、webViewで投稿全体を表示しようとしています。

- (void)viewDidLoad {

// Super
[super viewDidLoad];

_date = [NSDateFormatter localizedStringFromDate:[NSDate date]
                                                      dateStyle:NSDateFormatterShortStyle
                                                      timeStyle:NSDateFormatterShortStyle];

CGRect frame = _descriptionWebView.frame;
frame.size.width = 320;
frame.size.height = 2000;
_descriptionWebView.frame = frame;
_descriptionWebView = [[UIWebView alloc] initWithFrame:frame];
_descriptionWebView.delegate = self;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 2;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
switch (section) {
    case 0: return 3;
    default: return 1;
}

}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

// Get cell
static NSString *CellIdentifier = @"CellA";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
cell.textLabel.textColor = [UIColor blackColor];
cell.textLabel.font = [UIFont systemFontOfSize:15];

    // Display
    switch (indexPath.section) {
        case SectionHeader: {

            // Header
            switch (indexPath.row) {
                case SectionHeaderTitle:
                    cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
                    cell.textLabel.text = _blogTitle;
                    cell.textLabel.numberOfLines = 2; // Multiline
                    break;
                case SectionHeaderDate:
                    cell.textLabel.text = _date;
                    break;
                case SectionHeaderURL:
                    cell.textLabel.text = [NSString stringWithFormat:@"By %@",_author];
                    cell.textLabel.textColor = [UIColor grayColor];
                    break;
            }
            break;

        }
        case SectionDetail: {

            // Description
            NSString* htmlString = _description;
            [_descriptionWebView loadHTMLString:htmlString baseURL:nil];
            [[cell contentView] addSubview:_descriptionWebView];
            _descriptionWebView.scrollView.scrollEnabled = NO;
            _descriptionWebView.scalesPageToFit = YES;


        }
    }

return cell;

}

ここが私が本当に悩んでいる部分です。私は2つの異なる高さを返しています

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == SectionHeaderTitle) {

    // Regular
    return 54;

} else {

    NSInteger height = [[_descriptionWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] integerValue];

    return height;
}
}

有望と思われる別の投稿を見つけました...しかし、私はこれが初めてなので許してください。エラーが発生してしまいます。

- (void)webViewDidFinishLoad:(UIWebView *)webView {
CGRect frame = webView.frame;
frame.size = [webView sizeThatFits:CGSizeZero];
frame.size.height += 20.0f; // additional padding to push it off the bottom edge
webView.frame = frame;

webView.delegate = nil;

UITableViewCell *cell =[_cells objectAtIndex:webView.tag];
[cell.contentView addSubview:[_loadingWebView autorelease]];
cell.contentView.frame = frame;
[cell setNeedsLayout];

webView.alpha = 1.0f;

[self.tableView beginUpdates];
NSArray *paths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:webView.tag]];
[self.tableView insertRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];

// Storing the currently loading webView in case I need to clean it up
// before it finishes loading.
_loadingWebView = nil;
}

具体的UITableViewCell *cell =[_cells objectAtIndex:webView.tag];には、「'UITableViewCell' の目に見える @interface がセレクター 'objectAtIndex を宣言していません。

誰でも私にいくつかのガイダンスを提供できますか? 私はこの問題で何日も立ち往生しています。お力になれずとも、読んでいただきありがとうございます。

4

2 に答える 2

1

UITableViewCells を _cells 配列に格納しないでください。セルは tableview によって再利用されるため、indexPath と同じ数のセルは存在しません。適切なセル インスタンスを取得する場合は、tableView に要求できます。

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]

これは、セルが表示されている場合にのみセルを返します。より良い解決策は、

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]
[self.tableView endUpdates];

webview の読み込みが完了したら、

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

セルのレイアウトを処理します。

于 2012-11-11T22:15:58.077 に答える
0

このコードを使用して UITableViewCell を取得してください

UITableViewCell *cell=[tbl_showing_Details cellForRowAtIndexPath:[NSIndexPath indexPathForRow:clickedTag inSection:section]];

ここで、tbl_showing_Details はテーブル名、clickedTag はセルの現在のセクションの行、section は現在のセクションです。

ありがとう。

于 2013-10-24T11:57:04.423 に答える