web-dev-qa-db-ja.com

「viewControllerのプロトコルUIScrollViewDelegateへの冗長な適合性を迅速に解決するにはどうすればよいですか?

私は、stackOverflowとSwiftを習得したばかりです。 「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          
    }
6
Harish Singh

クラスViewControllerが2つの方法でプロトコルUIScrollViewDelegateに準拠しているため、このエラーが発生しています。 UITableViewControllerはすでにそのプロトコルに準拠しているため、再度追加する必要はありません。そこからUIScrollViewDelegateを削除してください。

これは、UITableViewControllerUITableViewDelegateに準拠しているUIScrollViewDelegateに準拠している方法です。これで十分でしょう

class ViewController: UITableViewController{
}
15
Anil Varghese

簡単な説明は、UITableViewControllerには組み込みのスクロールビューが付属しているため、必要ありませんスクロールビュー。 UIScrollViewDelegateを削除すれば、問題ありません。

ご不明な点がございましたらお気軽にご質問ください:)

3
Akshansh Thakur