我在斯威夫特写了一个协议:
protocol FooDelegate{
titleImage:UIImage? {get}
}
我想,以确保符合它的类必须是一个UITableViewController类型。
换一种说法:
// ViewController conform FooDelegate is OK,Because ViewController
// is inherit from UITableViewController!
class ViewController:UITableViewController,FooDelegate /* compile ok */{
}
// OtherVC is failed to conform FooDelegate,Because it is not inherit
// from UITableViewController.
class OtherVC:UIViewController,FooDelegate /* will compile error */{
}
怎么做?
我改变FooDelegate的定义如下:
protocol FooDelegate where Self:UITableViewController {
var titleImage:UIImage? {get}
}
但它似乎并没有工作。
*修正部分*:使用自助:是的UITableViewController OK!
但是,当我写下面编译时,错误的是:
class StubClass{
var delegate:FooDelegate!
func invoke(){
let idxSet = ...
delegate.tableView.reloadSections(idxSet, with: .none) //Error:Value of type 'FooDelegate' has no member 'tableView'
}
}
请看看这个错误线之上。 这难道没有委托任何的tableView财产? 委托符合FooDelegate,并FooDelegate使自我:的UITableViewController,和的UITableViewController必须的tableView财产?? !!
什么是错在这里??? 谢谢 :)