在自定义TableView Cell中的UIWebView

问题描述:

我有一个简单的Interface Builder文件,它是一个Custom TableView Cell。自定义的tableview单元有两个网点...在自定义TableView Cell中的UIWebView

  1. 的WebView
  2. 文本标签

出于某种奇怪的原因,我得到这个错误...

2012-07-12 16:28:23.206 VideoPush[3761:707] -[UITableViewCell webView]: unrecognized selector sent to instance 0x168cc0 
2012-07-12 16:28:23.211 VideoPush[3761:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell webView]: unrecognized selector sent to instance 0x168cc0' 
*** First throw call stack: 
(0x355e188f 0x37988259 0x355e4a9b 0x355e3915 0x3553e650 0x87279 0x33075efb 0x33074fd9 0x33074763 0x33018f37 0x355401fb 0x32410aa5 0x324106bd 0x32414843 0x3241457f 0x3243c911 0x3243c8e3 0x3305a10f 0x33047b33 0x33015ac3 0x33015567 0x33014f3b 0x371d422b 0x355b5523 0x355b54c5 0x355b4313 0x355374a5 0x3553736d 0x3304686b 0x33043cd5 0x86e5b 0x86e00) 
terminate called throwing an exception(lldb) 

MY XIB

enter image description here

这里是CustomCell.h上述厦门国际银行的控制器......

#import <UIKit/UIKit.h> 

@interface VPCustomCell : UITableViewCell 
@property (strong, nonatomic) IBOutlet UIWebView *webView; 
@property (strong, nonatomic) IBOutlet UILabel *titleLabel; 

@end 

最后是包含实际表视图我的视图控制器...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    NSString *htmlString = @"<html><head> <meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = 120\"/></head> <body style=\"background:#FFF;margin-top:0px;margin-left:0px\"> <div><object width=\"120\" height=\"80\"> <param name=\"movie\" value=\"http://www.youtube.com/v/1Xqn5IHbusA&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"></param> <param name=\"wmode\" value=\"transparent\"></param> <embed src=\"http://www.youtube.com/v/1Xqn5IHbusA&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"120\" height=\"80\"></embed> </object></div></body></html>"; 
    // Configure the cell... 
    [cell.webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://www.youtube.com"]]; 
    cell.titleLabel.text = @"Hello"; 

    return cell; 
} 

注意:在接口文件中,我声明了这一点并导入了我的自定义单元格...

VPCustomCell *cell; 

我有什么麻烦理解是错误是什么问题?

+0

你没有在任何地方声明'cell'。你在使用xib还是故事板? – 2012-07-12 20:41:51

+0

用于tableview和xib的自定义单元格的故事板 – 2012-07-12 20:42:36

+0

您可以在故事板中实现自定义单元格,这将是一个更简单的方法,它还允许您使用'dequeueReusableCellWithIdentifier:'。所有你需要做的就是设置你的tableview使用原型内容,然后在那里显示的单元格可以更改为你的自定义单元类,然后插入webview – 2012-07-12 20:43:49

在Interface Builder中,看在身份检查(选项命令-3),并确保你已经设置了类表格的争夺细胞到您的CustomCell细胞类。

使用UITableViewCells时,最好处理标签而不是插座。对于你的问题,我会删除网点,在属性检查器中给Webview一个标签或任何你想要的,比如100.对标签做同样的事情。然后在您的cellForRowAtIndexPath:

static NSString *CellIdentifier = @"Cell"; 
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

NSString *htmlString = @"<html><head> <meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = 120\"/></head> <body style=\"background:#FFF;margin-top:0px;margin-left:0px\"> <div><object width=\"120\" height=\"80\"> <param name=\"movie\" value=\"http://www.youtube.com/v/1Xqn5IHbusA&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"></param> <param name=\"wmode\" value=\"transparent\"></param> <embed src=\"http://www.youtube.com/v/1Xqn5IHbusA&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"120\" height=\"80\"></embed> </object></div></body></html>"; 
// Configure the cell... 
UIWebView *thisWebView = (UIWebView*)[cell viewWithTag:100]; 
UILabel *thisLabel = (UILabel*)[cell viewWithTag:whateverYouWant]; 
[thisWebView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://www.youtube.com"]]; 
thisLabel.text = @"Hello"; 
return cell; 

,你应该是好

+0

问题更可能是'dequeueReusableCellWithIdentifier'返回默认的'UITableViewCell'而不是自定义子类 – 2012-07-12 20:52:11

+1

个人而言,我绝不会这样做,因为在代码中使用标记会使其非常混乱且难以阅读。但是,如果你确实想这样做,至少使用标签的常量,因为它会使代码更清晰。 – 2012-07-12 21:01:02