objective-c - 如何获取包含 WebView 的单元格的 NSTableView heightOfRow

标签 objective-c cocoa webview nstableview

我有一个 NSTableView,它有一个列,其中的行包含 WebKit WebView。我遇到的问题是如何获取 WebView 的大小,以便可以在 TableView 的 heightOfRow: 方法中设置高度。

以下是代码的相关部分:

// The only essential/required tableview dataSource method
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
    return [self.messagesArray count];
}

// This method is optional if you use bindings to provide the data
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {

    NSString *identifier = [tableColumn identifier];
    if ([identifier isEqualToString:@"MainCell"]) {

        ChatTableViewCell *cellView = (ChatTableViewCell*)[tableView makeViewWithIdentifier:@"MainCell" owner:self];
        NSString *htmlString = [self.messagesArray objectAtIndex:row];
        [[cellView.webView mainFrame] loadHTMLString:htmlString baseURL:nil];
        [cellView.webView.mainFrame.frameView setAllowsScrolling:NO];

        return cellView;
    }

    return nil;
}

我遇到的问题是如何在此方法中获取大小。到目前为止我所尝试的一切都给了我一个异常(exception)。我认为这是因为调用以下方法时单元格未正确初始化,并且 WebView 方法 loadHTMLString 是异步的。

-(CGFloat) tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {
    //What can I put here?
}

我希望能够将单元格的大小调整为与 WebView 中的内容相同的大小。

编辑:我尝试将以下内容添加到 heightOfRow 方法中:

    WebView *webView = [((ChatTableViewCell*)[tableView viewAtColumn:0 row:row makeIfNecessary:YES]) webView];
    NSRect webViewRect = [webView frame];
    return webViewRect.size.height;

它给了我以下内容:

警告:NSTableView 检测到从 -heightOfRow 委托(delegate)方法内部请求了 rowView。不支持!

最佳答案

试试这个,它会给你 webview 内容的高度..

使用这样的 html 字符串加载 webview..

embedHTML = [embedHTML stringByAppendingFormat:@"<body><div id='size_div'>%@</div></body></html>",YourString];

现在在 webViewDidFinishLoad 方法中保留此语句...

NSString *output = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"size_div\").offsetHeight;"];  
NSLog(@"height: %@", output);

关于objective-c - 如何获取包含 WebView 的单元格的 NSTableView heightOfRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577965/

相关文章:

ios - 在 UITableView 中居中图像

cocoa - CGImageGetWidth 返回与实际图像不同的尺寸

swift - 从 windowDidLoad 启动 ViewController 作为工作表

javascript - 如何从 webView,Android 中的@JavascriptInterface 方法调用 Javascript?

JavaFX Web 引擎无法完全运行 javascript

android - 解决webview中的dns查找问题

ios - 如何使用自动布局用多个 UILabel 填充 UITableViewCell

iphone - three20:更改 TTButton 的文本阴影

ios - NSURLConnection 无响应

cocoa - 从 NSTableView 中与 Core Data 链接的选定行获取数据