implement forwardingTargetForSelector for scroll view delegate

This commit is contained in:
Max Sokolov 2016-02-18 11:39:08 +03:00
parent 9b420278a9
commit 30159e363b
5 changed files with 15 additions and 23 deletions

View File

@ -28,6 +28,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate
private weak var tableView: UITableView!
private var sections = [TableSectionBuilder]()
public var scrollDelegate: UIScrollViewDelegate?
public init(tableView: UITableView) {
super.init()
@ -73,6 +74,14 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate
builder.0.invokeAction(.custom(action.key), cell: action.cell, indexPath: indexPath, itemIndex: builder.1, userInfo: action.userInfo)
}
}
public override func respondsToSelector(selector: Selector) -> Bool {
return super.respondsToSelector(selector) || scrollDelegate?.respondsToSelector(selector) == true
}
public override func forwardingTargetForSelector(selector: Selector) -> AnyObject? {
return scrollDelegate?.respondsToSelector(selector) == true ? scrollDelegate : super.forwardingTargetForSelector(selector)
}
}
public extension TableDirector {

View File

@ -7,7 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
504740931C4FEEC50012132B /* TableDirectorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504740921C4FEEC50012132B /* TableDirectorExtensions.swift */; };
508B71841BF48DD300272920 /* TableSectionBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508B71831BF48DD300272920 /* TableSectionBuilder.swift */; };
508B71861BF48E0D00272920 /* TableRowBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508B71851BF48E0D00272920 /* TableRowBuilder.swift */; };
DA1BCD0F1BF5472C00CC0479 /* TableDirector.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1BCD0E1BF5472C00CC0479 /* TableDirector.swift */; };
@ -25,7 +24,6 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
504740921C4FEEC50012132B /* TableDirectorExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableDirectorExtensions.swift; sourceTree = "<group>"; };
508B71831BF48DD300272920 /* TableSectionBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableSectionBuilder.swift; sourceTree = "<group>"; };
508B71851BF48E0D00272920 /* TableRowBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableRowBuilder.swift; sourceTree = "<group>"; };
DA1BCD0E1BF5472C00CC0479 /* TableDirector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableDirector.swift; sourceTree = "<group>"; };
@ -75,7 +73,6 @@
DAB7EB291BEF787300D2AD5E /* TabletDemo */ = {
isa = PBXGroup;
children = (
504740921C4FEEC50012132B /* TableDirectorExtensions.swift */,
DAB7EB2A1BEF787300D2AD5E /* AppDelegate.swift */,
DAB7EB2C1BEF787300D2AD5E /* ViewController.swift */,
DAB7EB3F1BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift */,
@ -181,7 +178,6 @@
DAED08F11C14DE7E006C04D8 /* MyTableViewCell.swift in Sources */,
DAF003961C14DC0C0028C3D6 /* MyNibTableViewCell.swift in Sources */,
508B71861BF48E0D00272920 /* TableRowBuilder.swift in Sources */,
504740931C4FEEC50012132B /* TableDirectorExtensions.swift in Sources */,
DA1BCD0F1BF5472C00CC0479 /* TableDirector.swift in Sources */,
DAB7EB401BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift in Sources */,
DAB7EB2B1BEF787300D2AD5E /* AppDelegate.swift in Sources */,

View File

@ -1,18 +0,0 @@
//
// TableDirectorExtensions.swift
// TabletDemo
//
// Created by Max Sokolov on 20/01/16.
// Copyright © 2016 Tablet. All rights reserved.
//
import Foundation
import UIKit
extension TableDirector {
public func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
//invokeAction(.custom(""), cell: nil, indexPath: nil)
}
}

View File

@ -8,7 +8,7 @@
import UIKit
class ViewController: UIViewController {
class ViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var tableView: UITableView!
var tableDirector: TableDirector!
@ -17,6 +17,7 @@ class ViewController: UIViewController {
super.viewDidLoad()
tableDirector = TableDirector(tableView: tableView)
tableDirector.scrollDelegate = self
let rowBuilder = TableRowBuilder<Int, UITableViewCell>(items: [1, 2, 3, 4], id: "cell", estimatedRowHeight: 44)
.action(.configure) { data in
@ -62,4 +63,8 @@ class ViewController: UIViewController {
sectionBuilder.appendRowBuilder(TableRowBuilder<Int, MyNibTableViewCell>(item: 0, estimatedRowHeight: 44))
}
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
print("begin dragging")
}
}