現在、カスタマイズされた uitableview セルに webview をロードしています。問題は、Web ビューのサイズが可変であることです。webViewDidFinishLoad では、html ドキュメントの実際のサイズに基づいて Web ビューのサイズを設定できます。私の問題は、Web ビューの読み込みが完了する前に、すでに heightForRowAtIndexPath で高さが設定されているテーブル セルです。テーブル セルがロードされた後、テーブル セルの高さを変更するにはどうすればよいですか?
理想的には、このようなコード行を使用できるようになるべきだと思います。
cellW.frame = cellW.cellWebView.frame;
ただし、heightForRowAtIndexPath のセル情報にアクセスできないようです。状況をかなりうまく説明したように感じましたが、投稿すべきだと思われるコードはすべてここに掲載できます。私は多くのことを試しました (そのため、どこでもコメントや失敗した試みがあります) が、主な問題は、heightForRowAtIndexPath などの適切な場所でセル情報にアクセスできないように見えることです。webViewDidFinishLoad で何らかの方法でセル情報を設定することさえできれば、Web ビューのフレーム サイズも設定しているセルのフレームを簡単に設定できます。
以下は、テーブル セル サブクラスのセットアップです。
#import <UIKit/UIKit.h>
#import "DefinitionsAndConstants.h"
@interface UITableViewCellWebView : UITableViewCell
{
UIWebView *cellWebView;
}
@property (nonatomic,retain) UIWebView *cellWebView;
@end
これは、Gavinのコードの一部を使用しようとして最後に試みたものです。しかしもちろん、cellForRowAtIndexPath が割り当て可能でないため、テーブル セルを設定する方法はありません。
-(void)webViewDidFinishLoad:(UIWebView *)webViews {
[webViews stringByEvaluatingJavaScriptFromString:@"twitterfy()"];
[webViews stringByEvaluatingJavaScriptFromString:@"document.getElementById('tweettext').innerHTML=tweet"];
NSString* h = [webViews stringByEvaluatingJavaScriptFromString:@"getDocHeightMax()"];
int height = [h intValue];
webViews.frame = CGRectMake(0.0f, 0.0f, 320.0f, height);
NSString* i = [webViews stringByEvaluatingJavaScriptFromString:@"return indexPath"];
int ii = [i intValue];
NSIndexPath* ip = [NSIndexPath indexPathForRow:ii inSection:0];
UITableViewCellWebView *tableCell = (UITableViewCellWebView *)[self.tableView cellForRowAtIndexPath:ip];
if (tableCell) {
tableCell.frame = webViews.frame;
}
NSLog(@"Got height from webview %d", height);
}