我已经在目标c文件中快速使用了协议,但这里没有调用协议方法是代码
@Swift文件
@objc protocol clickBookmarksProtocolDelegate
{
func openbook(bookmark : String)
}
var delegate : clickBookmarksProtocolDelegate?
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
a = data[indexPath.row][main]
println(a)
if (a == "Bookmarks")
{
self.delegate?.openbook(data[indexPath.row][url])
dismissViewControllerAnimated(false, completion: nil)
}
@obj C .m文件
#import "Video_Downloader-Swift.h"
@interface BrowserViewController() <clickBookmarksProtocolDelegate>
@end
- (void)openbook:(NSString * __nonnull)bookmark
{
[self loadAddress:bookmark];
_addressBar.text=bookmark;
}
方法不会调用
答案 0 :(得分:1)
好吧,你不应该为此使用委托。代表被用作某种回调。例如,想象一下你有一个控制器会显示另一个:
FirstViewController -> SecondViewController
Delegates。
在您的情况下,您只想显示SecondViewController,为此您有几个选项。
如果您有导航视图控制器,最简单的方法是在didSelectCell方法中推送新的BrowserViewController:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.navigationController?.pushViewController(BrowserViewController(), animated: true)
}