tl; dr:
原來我需要標記爲@objc
其中定義了didSelectRowAtIndexPath
的類擴展名。
詳情:
注意的是,儘管在大多數情況下,didSelectRowAtIndexPath
在類擴展,用於符合UITableViewDelegate
協議的定義,我的設置,因爲繼承是不同的:
我有一個ParentVC
和一個ChildVC
。 ParentVC
通過類擴展符合UITableViewDelegate
(在Apple的「The Swift Programming Language(Swift 4)」中,在「添加擴展的協議一致性」下提及此方法)。 ParentVC
實現了一些UITableViewDelegate
方法,但不執行didSelectRowAtIndexPath
。
ChildVC
其中didSelectRowAtIndexPath
實際上被實現。這是在類擴展名(ChildVC
)中完成的,但請注意,此類擴展名不包含一致性(: UITableViewDelegate
)(ParentVC
已經這樣做並且試圖在ChildVC
中也會這樣做會導致「冗餘一致性」錯誤)。
因此,將@objc
添加到ChildVC
的類擴展中解決了該問題。
不知道這是否是Swift/Xcode /編譯器/分析器中的錯誤(可能至少有一個警告是爲了?),或者我用於協議一致性+繼承的方法是否有缺陷,是否願意聽取別人對此的看法。