简体   繁体   English

如何在swift中解决错误“viewController与协议UIScrollViewDelegate的冗余一致性?

[英]How to solve the error "Redundant conformance of viewController to protocol UIScrollViewDelegate in swift?

I am new on stackOverflow and learning swift. 我是stackOverflow的新手,学习迅捷。 I am getting the error "Redundant conformance of viewController to protocol while working with Stretch headers.UIScrollViewDelegate. I am specifying my code below. please correct any one . 我在使用Stretch headers.UIScrollViewDelegate时遇到错误“viewController与协议的冗余一致性。我在下面指定我的代码。请更正任何一个。

class ViewController: UITableViewController , UIScrollViewDelegate {
    private let kTableHeaderHeight : CGFloat = 300.0
    // Using Implicitly Unwrapped Optional, UIView!
    var headerView:UIView!

    let items = [
    NewsItem(category: .World, summary: "Climate Change protests, Need to preserve our Ecosysytem"),
    NewsItem(category: .India, summary: "Climate Change protests, Need to preserve our Ecosysytem"),
    NewsItem(category: .America, summary: "Climate Change protests,Need to preserve our Ecosysytem"),
    NewsItem(category: .Japan, summary: "Climate Change protests, Need to preserve our Ecosysytem"),
    NewsItem(category: .China, summary: "Climate Change protests, Need to preserve our Ecosysytem"),
    NewsItem(category: .Nepal, summary: "Climate Change protests, Need to preserve our Ecosysytem")]
    override func viewDidLoad() {
        super.viewDidLoad()
        headerView = tableView.tableHeaderView
        tableView.tableHeaderView = nil
        tableView.addSubview(headerView)
   tableView.contentInset = UIEdgeInsetsMake(kTableHeaderHeight, 0, 0, 0)
        tableView.contentOffset = CGPointMake(0, -kTableHeaderHeight)
        updateHeaderView()
    }
    func updateHeaderView(){
        var HeaderRect = CGRectMake(0,-kTableHeaderHeight, tableView.bounds.width, kTableHeaderHeight)

        if tableView.contentOffset.y < -kTableHeaderHeight{
            HeaderRect.origin.y = tableView.contentOffset.y
            HeaderRect.size.height = -tableView.contentOffset.y
        }
        headerView.frame = HeaderRect
    }
    override func didReceiveMemoryWarning() {enter code here
        super.didReceiveMemoryWarning()   
    }
    override func scrollViewDidScroll(scrollView: UIScrollView) {
        updateHeaderView()
    }
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let item = items[indexPath.row]
let cell = tableView.dequeueReusableCellWithIdentifier("Cell" forIndexPath: indexPath) as! NewsItemTableViewCell
        cell.newsItem = item
 return cell          
    }

You are getting this error because your class ViewController conforming to the protocol UIScrollViewDelegate in two ways. 您收到此错误是因为您的类ViewController以两种方式符合协议UIScrollViewDelegate UITableViewController is already conforming to that protocol, you dont need to add it again. UITableViewController已经符合该协议,您不需要再次添加它。 So remove UIScrollViewDelegate from there, you are good. 所以从那里删除UIScrollViewDelegate ,你很好。

This is how it is UITableViewController conforms to UITableViewDelegate which conforms to UIScrollViewDelegate . 这就是UITableViewController符合UITableViewDelegate ,它符合UIScrollViewDelegate This would be enough 这就足够了

class ViewController: UITableViewController{
}

The shortest explanation would be that Your UITableViewController comes with a built in scroll View, so you don't need a delegate for Scrollview. 最简单的解释是您的UITableViewController带有内置的滚动视图,因此您不需要 Scrollview的委托。 Remove UIScrollViewDelegate and you will be fine. 删除UIScrollViewDelegate ,你会没事的。

Feel free to ask any question :) 随意问任何问题:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM