从 UITableViewCell 打开另一个视图

Posted

技术标签:

【中文标题】从 UITableViewCell 打开另一个视图【英文标题】:Opening another view from a UITableViewCell 【发布时间】:2013-10-17 17:24:16 【问题描述】:

我正在尝试使用同一场景中的 UIWebView 打开嵌入在自定义表格视图单元格中的链接。但是,当我点击按钮时,webview 没有响应打开。该按钮正在工作(它将打印一个 NSLog),如果我将其设置为在“HouseItemsViewController”的 ViewDidLoad 中可见,webview 将显示。

表格视图包含我的自定义单元格,我正在尝试显示突出显示的视图:

Imgur image of my "House Items View Controller" Scene

HouseItemsViewController 包含一个接受 NSURL 的方法:

- (void)displayWebViewWithURL:(NSURL *)targetURL

    NSURL *url = targetURL;
    NSURLRequest *myrequest = [NSURLRequest requestWithURL:url];
    [webView loadRequest:myrequest];
    theURLView.hidden=NO;

自定义表格视图单元格包含一个动作:

- (IBAction)congressUrlLink:(id)sender

    HouseItemsViewController* billViewController = (HouseItemsViewController*)self.tapHandler;
    [billViewController displayWebViewWithURL:congressUrl];

tapHandler 的定义位置:

@property (nonatomic, copy) void (^tapHandler)(id sender);

从这里引用 HouseItemsViewController 并执行 displayWebViewWithURL:(NSURL *)targetURL 方法的正确方法是什么?[

【问题讨论】:

【参考方案1】:

我会手动将 tapHandler 分配为委托。

@property (nonatomic, weak) HouseItemsViewController *delegate;

合成它,并在初始化表格视图单元格后手动分配:

 [myCell setDelegate:self];

希望对你有帮助

【讨论】:

谢谢,KDaker。您会设置该委托属性并在单元格的头文件或表格视图的标题中合成它吗?然后你会在创建单元格的 tableview 控制器中调用“[myCell setDelegate:self]; 吗?你会更改我上面共享的任何代码吗?谢谢你的帮助。每次我想我开始得到这些东西我意识到我什么都不知道。 我在 TableViewController 中添加了创建单元格的“selfDelegate”行,但它返回错误:不兼容的指针类型将“TableViewController”发送到“HouseItemsViewController *”类型的参数我试图取消隐藏的带有 web 视图的视图。 @TedCap 你需要合成它(单元格实现文件)。现在 setDelegate 在创建单元格的位置被调用,通常在 cellForRowAtIndexPath: 中。我将self 作为代表传递,因为我假设HouseItemsViewController 是包含您的tableview 的内容,不是这样吗?在你的单元格的头文件中,不要 import HouseItems... 类,而是使用这个:@class HouseItemsViewController 不走运。仍然没有反应。 TableView 是“BillTableViewController”@interface BillTableViewController 中的 IBOutlet:NSObject 。根据原始帖子中链接的图像,此 BillTableViewController 位于由 HouseItemsViewController 控制的视图层次结构中。我还有其他方法吗?感谢您的帮助。 啊,你知道我认为搞砸的是,URL 附加到的按钮存在于独立于情节提要的 xib 上。

以上是关于从 UITableViewCell 打开另一个视图的主要内容,如果未能解决你的问题,请参考以下文章

如何执行从自定义 UITableViewCell(xib) 到另一个 ViewController 的 segue 视图

如何从另一个视图控制器将值插入 UITableViewCell

将图像异步加载到自定义 UITableViewCell 部分工作

从另一个视图控制器单击 uitableviewcell 后,swift 3 更改 uitableviewcell?

UITableViewCell 原型在同一视图控制器中的两个 UITableView 之间重用

在没有 Segue 的情况下从 UITableViewCell 打开视图控制器