TableView与协议UITableViewDataSource与Xib文件的冗余一致性

时间:2015-12-05 00:41:33

标签: xcode swift uitableview xib

我有一个父视图UIViewController(在故事板上),一个带有.xib的TableViewController和带有.xib的TableViewCell。我正在尝试将DataSource连接到TableView,但是它给了我一个错误:

  

'TableView1'与协议'UITableViewDataSource'

的冗余一致性      

'TableView1'继承了来自超类的协议'UITableViewDataSource'的一致性。

如果不在类附近添加dataSource并将其作为class TableView1: UITableViewController {..尝试,它不会给我任何错误,在模拟器中,当我向下滚动时,我可以看到表格视图错觉。

但是,当我尝试添加dataSource时,它给了我这些错误。

我设置它的路径......:

  1. Ctrl +从xib拖动到TableView1并将其连接为Globals

  2. 在xib文件中,我连接了DataSource&代表

  3. enter image description here

    1. 最后,我的TableView1:
    2. 这里有

      class TableView1: UITableViewController, UITableViewDataSource {错误..

      @IBOutlet var GlobalsTableView: UITableView!
      
      var results: [AnyObject]? = []
      
      override func viewDidLoad() {
          super.viewDidLoad()
              print("A")
      }
      
      override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
          // #warning Incomplete implementation, return the number of sections
          return 1
      }
      
      override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
          // #warning Incomplete implementation, return the number of rows
          return self.results?.count ?? 0
      }
      
      
      override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
          let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! DogTableViewCell
      
          return cell
       }
      }
      

      请注意,在TableView1.xib中,我无法选择TableView1作为自定义类 - >上课(但我不认为这是必要的)。

2 个答案:

答案 0 :(得分:13)

当某个类继承自UITableViewController时,它默认符合UITableViewDataSource& UITableViewDelegate您无需明确指定它。

只有在UITableViewDataSource中嵌入UITableViewDelegate时,才需要符合UITableViewUIViewController

答案 1 :(得分:0)

您的课程中至少有2种构象。您只需要扩展一次。

第一种情况:

您遵循类说明和扩展名。在类说明中删除“我的代表”。

class MyViewController: MyDelegate{
    //class functions here
}

extension MyViewController: MyDelegate{
func1()
}

第二种情况:

您遵循两个扩展名。

extension MyViewController: MyDelegate{
func1()
}

extension MyViewController: MyDelegate{
func2()
}

将它们合并为一个扩展,例如:

extension MyViewController: MyDelegate{
func1()
func2()
}