我有一個包含WebKit WebView的單列列的NSTableView。我遇到的問題是如何獲得WebView的大小,以便我可以在表視圖的heightOfRow:
方法中設置高度。如何獲得包含WebView的單元格的NSTableView 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;
}
我的問題是如何讓大小此方法。我到目前爲止所嘗試過的一切都給了我一個例外。我認爲這是因爲在調用以下方法時單元格未正確初始化,並且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;
,它給我下面的:
WARNING: NSTableView detected a rowView was requested from inside of the -heightOfRow delegate method. That is not supported!
如何再更改的tableview單元格的大小? – danielbeard
這個答案讓我走上正軌,謝謝。 – danielbeard