From 8613687eeafb2032da8275c084e17d161d52512f Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Mon, 23 Nov 2015 22:58:14 +0300 Subject: [PATCH] perform -> invoke --- README.md | 22 +++++++++--------- Tablet/TableDirector.swift | 20 ++++++++-------- Tablet/TableRowBuilder.swift | 6 ++--- Tablet/Tablet.swift | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 25548 -> 25705 bytes .../ConfigurableTableViewCell.swift | 2 +- .../TabletDemo/CustomTableActions.swift | 2 +- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index d23abe9..6193aaa 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ You may want to setup a very basic table view, without any custom cells. In that import Tablet let rowBuilder = TableRowBuilder(items: [user1, user2, user3], id: "reusable_id") - .action(.configure) { data in + .action(.configure) { data -> Void in data.cell?.textLabel?.text = data.item.username data.cell?.detailTextLabel?.text = data.item.isActive ? "Active" : "Inactive" @@ -104,13 +104,13 @@ Tablet provides a chaining approach to handle actions from your cells: import Tablet let rowBuilder = TableRowBuilder(items: [user1, user2, user3], id: "reusable_id") - .action(.configure) { data in + .action(.configure) { data -> Void in } - .action(.click) { data in + .action(.click) { data -> Void in } - .action(.shouldHighlight) { data in + .action(.shouldHighlight) { data -> ReturnValue in return false } @@ -126,7 +126,7 @@ class MyTableViewCell : UITableViewCell { @IBAction func buttonClicked(sender: UIButton) { - Action(key: kMyAction, sender: self, userInfo: nil).perform() + Action(key: kMyAction, sender: self, userInfo: nil).invoke() } } ``` @@ -135,13 +135,13 @@ And receive this actions with your row builder: import Tablet let rowBuilder = TableConfigurableRowBuilder(items: users, id: "reusable_id", estimatedRowHeight: 42) - .action(.click) { data in + .action(.click) { data -> Void in } - .action(.willDisplay) { data in + .action(.willDisplay) { data -> Void in } - .action(kMyAction) { data in + .action(kMyAction) { data -> Void in } ``` @@ -159,18 +159,18 @@ extension TableDirector { public func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { - performAction(.custom(kTableDirectorDidEndDisplayingCell), cell: cell, indexPath: indexPath) + invokeAction(.custom(kTableDirectorDidEndDisplayingCell), cell: cell, indexPath: indexPath) } } ``` Catch your action with row builder: ```swift let rowBuilder = TableConfigurableRowBuilder(items: users, estimatedRowHeight: 42) - .action(kTableDirectorDidEndDisplayingCell) { data in + .action(kTableDirectorDidEndDisplayingCell) { data -> Void in } ``` -You could also perform an action that returns a value. +You could also invoke an action that returns a value. ## License diff --git a/Tablet/TableDirector.swift b/Tablet/TableDirector.swift index 30c6daf..41498bb 100644 --- a/Tablet/TableDirector.swift +++ b/Tablet/TableDirector.swift @@ -69,10 +69,10 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate return sections[indexPath.section].builderAtIndex(indexPath.row)! } - public func performAction(action: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath) -> AnyObject? { + public func invokeAction(action: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath) -> AnyObject? { let builder = builderAtIndexPath(indexPath) - return builder.0.performAction(action, cell: cell, indexPath: indexPath, itemIndex: builder.1) + return builder.0.invokeAction(action, cell: cell, indexPath: indexPath, itemIndex: builder.1) } internal func didReceiveAction(notification: NSNotification) { @@ -80,7 +80,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate if let action = notification.object as? Action, indexPath = tableView.indexPathForCell(action.cell) { let builder = builderAtIndexPath(indexPath) - builder.0.performAction(.custom(action.key), cell: action.cell, indexPath: indexPath, itemIndex: builder.1) + builder.0.invokeAction(.custom(action.key), cell: action.cell, indexPath: indexPath, itemIndex: builder.1) } } @@ -102,7 +102,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate let cell = tableView.dequeueReusableCellWithIdentifier(builder.0.reusableIdentifier, forIndexPath: indexPath) - builder.0.performAction(.configure, cell: cell, indexPath: indexPath, itemIndex: builder.1) + builder.0.invokeAction(.configure, cell: cell, indexPath: indexPath, itemIndex: builder.1) return cell } @@ -156,32 +156,32 @@ extension TableDirector { public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { - return performAction(.height, cell: nil, indexPath: indexPath) as? CGFloat ?? UITableViewAutomaticDimension + return invokeAction(.height, cell: nil, indexPath: indexPath) as? CGFloat ?? UITableViewAutomaticDimension } public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let cell = tableView.cellForRowAtIndexPath(indexPath) - if performAction(.click, cell: cell, indexPath: indexPath) != nil { + if invokeAction(.click, cell: cell, indexPath: indexPath) != nil { tableView.deselectRowAtIndexPath(indexPath, animated: true) } else { - performAction(.select, cell: cell, indexPath: indexPath) + invokeAction(.select, cell: cell, indexPath: indexPath) } } public func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { - performAction(.deselect, cell: tableView.cellForRowAtIndexPath(indexPath), indexPath: indexPath) + invokeAction(.deselect, cell: tableView.cellForRowAtIndexPath(indexPath), indexPath: indexPath) } public func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { - performAction(.willDisplay, cell: cell, indexPath: indexPath) + invokeAction(.willDisplay, cell: cell, indexPath: indexPath) } public func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool { - return performAction(.shouldHighlight, cell: tableView.cellForRowAtIndexPath(indexPath), indexPath: indexPath) as? Bool ?? true + return invokeAction(.shouldHighlight, cell: tableView.cellForRowAtIndexPath(indexPath), indexPath: indexPath) as? Bool ?? true } } \ No newline at end of file diff --git a/Tablet/TableRowBuilder.swift b/Tablet/TableRowBuilder.swift index edd2854..016fa2a 100644 --- a/Tablet/TableRowBuilder.swift +++ b/Tablet/TableRowBuilder.swift @@ -107,7 +107,7 @@ public class TableRowBuilder : RowBuilder { // MARK: Triggers - public func performAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? { + public func invokeAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? { if let action = actions[actionType.key] { return action.call(ActionData(cell: cell as? C, indexPath: indexPath, item: items[itemIndex], itemIndex: itemIndex)) @@ -129,13 +129,13 @@ public class TableConfigurableRowBuilder AnyObject? { + public override func invokeAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? { switch actionType { case .configure: (cell as? C)?.configureWithItem(items[itemIndex]) default: break } - return super.performAction(actionType, cell: cell, indexPath: indexPath, itemIndex: itemIndex) + return super.invokeAction(actionType, cell: cell, indexPath: indexPath, itemIndex: itemIndex) } } diff --git a/Tablet/Tablet.swift b/Tablet/Tablet.swift index 3331c53..698cd50 100644 --- a/Tablet/Tablet.swift +++ b/Tablet/Tablet.swift @@ -86,7 +86,7 @@ public class Action { self.userInfo = userInfo } - public func perform() { + public func invoke() { NSNotificationCenter.defaultCenter().postNotificationName(kActionPerformedNotificationKey, object: self) } @@ -114,5 +114,5 @@ public protocol RowBuilder { var reusableIdentifier: String { get } var estimatedRowHeight: CGFloat { get } - func performAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? + func invokeAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? } \ No newline at end of file diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate index 37a26d591729787b08719fcdb0e923493a543e62..479978b8f6b32052174734cf863c4d01bbf8411d 100644 GIT binary patch delta 12280 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

Jjyr z2Y8T&c!CYvQ5baI;Qz&c$bZCt%>R%7g#VQPjQ^bWqy@AW?M(;MA#^A$rK9L*I);v= z8Jw(;U5k zUP#x|4fNOa8hS0gjowc0pm)-T=)?3+PWlM_3w@rxK>teLp#P$8(zoc_^d0&xeUE-d zKc`nK3YJ7#owz*qJ;gpK&nl znNCb+rVG=R>CN}B>bKXQvKR0U!d{$*UR+0YgCnj>MDj24Zvpd3}%1;ooo$&f`ivL%5e79iqiV ztEIAU#qdG3mdakk`?*Xm7y37S?^jtSjy;sHT z0DFLF5!eZKf$za?oQd1uwz%CQuovtD1>gsqg|msbOvH+v*<-lXfqoetUB(#nx_G6o z?gTIZBRBz0zFSyksp?%@HKe+tW^@B-NjnWrgEIuapTSvh4*UYngA2gUE$}H#Da2M> zf&nf#(S+|Mpl<+|!4+)7`PjE*ZNGy*fTkW?!@2d~I<^yA{UxbcZhg1F?Q)^Gu&iKs zZAGs^m9G^yf?F=tEi&$c`z{&xu%jM4!0m~Q3Q3-y5S#>$iDCbNC*Uc#z$yHKJc@8J z2Iay&TuFwJI~FVC+82j;x|O|zfZO3Gp&B6Mw)rV23i7yL{j`wJc?lC?2pJi|Wd{{_ z5voEjZ~^*&CtS5K$kquLH3@)1=-;uhtYc~W1}Fq+?lv(D=<&+_oSK@7(Tz|HQe53G zIT8Xj48mP;XYT8uFsBrT{VzYD64+rleuwbm6Kr z4bTWvU@A<*-Ej{*5`T!t;E(XfIImn7+j|JtJ~&Yi+dvZ#ErxAjJD3HtVGb_GJ#hu@ zg?lfCW@v#q&<1mHAKVxB#{KXBLYLLSQ&VA)%cx>piG90`>^xN4zoRxUxw3N~ceFJF z1v|pd1Sr@E_pgUta1{aSNt}$E8Y0xg?yxt|EQUQ`IqV55U@trn55j|SH6F4U_JNhK zFYE{V@B~@kDR>&5fj`5ucm|${XW=jKZ2TpjLpCgU9$tXI!i(?{yi7K%xwsL3jhEmx zcrCGOSir29zu;Z6VZod57Q7Ab;CXmH{t7Qx1n?=E z*F?C81O%QXc&Q8bz$O4ohm150uNu^+vL<2J$f~}z1wzyeCh}_nbGZx5PHwPUdIFky zR{jsn&FG?#CUjT3(B%p<3Kiu-Y14G`km|lw{f5`Lc=K8L`LB zf+F#HZiP@PL@_89#Q`rA4=$htl*pYHI+WYU@Qrxq8I*+dq$?R2kdbu9qck`drGtlD zwtt~>8{UDxY2`YUiP|)~ZY$o@+I2ZD*O`zRS@5@bGyd+au50l^EB~}K6*W0#%bSiV z8S)m-ykRlwLTpYW+4}|X5N{_-+JVWrKtcg^cX=RzEYY_qC{YFKRW6L;c8S#7S`p8q z0rduHuNyphs1o(%wu_>8s2@lpUo?8p<{&@=&=8g6qfluQz*xa?Ws$c(> zIcwjTvj(km*|ip*ttU}aKiwstq# z_lDN}=m-2OzDTsb${*F)Sowz5!|3Q6bB>|o_%gnN&1CCsO5{ieN3u3o5~t3t8S0+v zbSIPO4Eou90<^6A7j)s3Z-2$V<2*M{F1yUVf_}r-@Sm^Ey@vjLL-h^x7ybiZ$L3;n zHv6V;?xF{+hnArm=pQon1~#j+s~5hppvUM1IpWZN=m~m?o}uUXCccGl<2(57V)T*% z6r>PE;d?CPv(S%)VJuX-PG%*i3Jc~WVG}aEC=t*sp}Z*{%9rw^gp@zNk00Q_@jv)q z{BQ{+rUIxyP(THN0{jTSz%N~SI@Oc{p9;(1-c^QkampmlS1ISlDLtGjN)1HyR5*TI zPetJWS{&P{V$kr)VL8J()KpeBdyk5yVu|;t82qH3io;KFUaM2AWlSQK3^a|D4*5}f z{0uM0&l@Sd>xG{;y;{#HE*A!HP$hG=q1wH&A&Z3on_I-0D9bCARu;lnrxInS@?B8+ z;pO#|gN5jIPa#!Idf-L8q`paQ%RxqUpgO%$)0u_57B$_ysBY9dZ!m@GLG>kv7gbL6 zq$;RhRBx&eRmnn{g$xTlSm?<@0SmoY=)IKcN6L=^5J3%eg*FR)NL=UOT`cr%4)L7u zKu#4N&TS2k2k>*RDxjU|~{o zXj7L!LnC#Wx@n}*T@_0NF%xzfMwt-M3g7Cw& z^M4X$f~8zZyLQ~OlmLok6r7?&!g)kz2NHzrERwQF!J>E;6|ks~jPD-(2h8L4Ni(={ zF&_ozorJHFJzkdU*k@s3xv*bzIw<7^$A$#H9$|5hAQ9J+FqQ?6hZbHjuY^}hc-ohR zBqF-7kkqXtm7m1zk4vCmW#?Ieun(__H-I+~4`pFF3wyF8H+Lo9Q=Bc)#T&~b?0tL5 zz?tuOnsX%;*s;OxoT)elQ)?+)fK|8ON5q=8N4}f76=ioD+Jy= z-hAFyyag^R`?0V;3#(W-fEbFk;ZisplG1>b2Q5`6Z#i#;JLtLX+K4wj`mNhvgUf~4 z#G@)MG(jbL?M+wSMEpI3a~7wO0@9C5Ob~EiC8QI4O7!n?hQy)d+cCM_cGr;^&kybUV71vX3P>xguI5})vT77OPR=~I(mOV9Nh$hS2~o=4aiZAb`l zpLTp#k;X4(A;~#T@&0X6GsG~H$mAQ_2DQM+ui}pdnl(ZZe*k|Ve-PKz7{NJ>T8f2- zxK+lO{GV8OnuX_B_$v#qvG7k8l2zPg;omHL$in|v_?$(MMLZUHu*jQ5LKX#+E&4TS z`JCH{E4Z~8JvnEJ+V7Qr`LkVJ+`5#C*9_**cMt!%T-g0p-9FwgIJmXQ2KSh?<^C|A z8``Fndq4HbYuNZp-QDYn#tN=~wo2T}npN(;joh)aEdi}%u5)*6;W0qwWUpOU6Yx% z5dCBmxWU4|Tw-pzmo$aGG?CkCRyf@ua?e5(y}=(%L}d=`=v!IhIEK*%u7 z8trVPm%Vkua(YFR(Fn1K*!5ymGUi3(lB}pi})cEdEDCMLg1c!^IA1c5)D#S0 zk*uB}K*_P$^)#fgVsK?yZB12mzgBs5v&js@2!UuB+E+W_%c5#*al|EK;&a z#iDQ)saX`kqDU5LmNEXW0)q))0vQPtL`n=4NoO)xl*FPm z7PVnfHj6B;(qyJBlj9QEj>%$3hn_{rEHX4QCdSNISY%{T3X4*SNH%{-Q~^VFl>a-n zlqqwmPiGNP<5FMf2#M;(^myCYa;7I!!J@V-YR4k-bcvhn2utb541CL2*oPU+RFiZM z5qFqyUT>g`L_m3hsR3ThFs63HRmTW4XaqB|`>RUEQc+vc$c$h{fwWHKF$Ve70?Ydh zOUf^@%&|-zlg&68+_YFLi)>`QEXrk(eFj@S>tNv#uj&eoe?k_-9tOP zHD6%9bN6<7oi9jQsUi1pBuz$L{wHM%YHi9M_n2<~lNq(L>VRv+hQXypFo@jw6qY$E zM_2aAsp;LnYD8ttapo}d6Ib6s;^aN&Q+y#mn6Ku?@)Jo`oXk(-XYkwdv-o}ab^K5H zU-IYj=kpiv>-mlR#r&oGP5jOLE&Of#9sFJV-Tb}${ruDX|HxzBDtZ#Vl-^CA&|ang zp#LP#Xa6QoWEsYfM4+5RRTh&&h;JoNUGvBj*8--9DIw%`_Gbn#gP3aaz_o@va2>_G zPe_EB@yt}Fk=e%FVqSVAcw~AMdUW@w@)+SU$>Vd6DIU{2IFFegUwC}!G1p_h#{!Ry z9-BNidu;L8=CQ+Lm&b08y&n5L4tN~&xZ?4|lkX|^jP*2nIy}og$9vB7Z17y_x!iN5 z=UUJ8o*O+kIX(A!-txTf`9eSm_yR`YE$|fx1tNh=pb{hqjDl1_x*$_v5?BN_fnAU< z7$KM}SRz;>STEQp*d*8^I3YMCI3qYK_(gC*a8Ynsa940&@VDS!!6U(cf~SJ#f|p+2 zUcp|;Ub$Yqy;!f$y&ApNdVS}$)oZ)gPOtC14thBcdmZsQ=5@mBl-FHviFbr|d+(0k zJ-o}k`+L9VJ@sar` ze3U*$pUyr#eMb1y`F!g0xz7}z={_@jX8F|nT=Kc%bI0e2FVC0u_3#z=zUTYC?^NHJ zzAJq<`d)JS{_f}J7w1>tH^Og%-z2{;{J!*?>o?zTiQg)}b$(m?e)K!$ch2vE-$lR6 zevgDap_kA{=qL0S1`9)lGND4K6vhbSg$Y8Pu&uDYuuxbmEERSTb`o|Gb`w?!2MPxZ zhX~&j4igR+jueg-E)i}J?hx)0?iTJ9?iU^qo)kJy3x5`#6P_3TD!e3o>L27E=U?JK zz<-$k2>((3@B2^m|J;9$|9t-i{tf<%{FnIe_CMr**8i&iHUI1WH~eq<-}Zm(|HS{9 z{|gZiArVjHCz6T`qC(Md(KylPqFJH^qD7)5qGh5LqHjdIL_dj+h>nVmi~bP(Df&xv zOLRwc&nXTU$BFe~gE&Q;Ce9G&ic7^^#NEX2ihGEMifhDU#B;<8#5=@?#6O9TijRvg zh%bt7if@bWitme`1@Hqz0RaJ$fZ%}l13nJe9dI<@c)-bk(*YL)t^`~SxEAm%&@<3G z&^OROP#hQ-*fuafupqD~ur#nkV5h*|fdc{u1v;w(hX#%e9340&urAOUxH520;Q7Gc z1Fr|(2)r5iSi(p=C0-IAiJ!z@B9;V7A|x6~v?Nv%FG-N-BzlQKk|QaQ^p}j4%$97D z?3NsroR$0{xgfbHxh%OMxhc6VxhuIZ`8&ur$QWb}8W>a?#0E_YS{T$2v?ypv(6XQv z&Y%rJTY|O)?FiZxv^(f%(D9&?L8pUm2i*;N7W5(*1fyWjU`cRraA>eBI4al>oD!TC zoDuwS@RH!8!54xr244>TE%;{eo#1=H4?+YX(hyxpen@3VzmTesfgyuKJ`9->GApDZ zWM9bfkdq;&Lw*i97jh@$UdV%xe?lIHJPsv)AmkA$2=xy24HbsUL&HKh0X|_6*@b#KJ-xNvCt<{N*W_g zkam!El=hMiln#~-k-jG#CLJpsC&kk7(hsB`N~cJdO4m!bNq>}{ke-sBk)Dq&EIT4QCOaX!Ec;vbOwN~!;)tzx%guVTOAfa0Lyu;ORMIj7=+;*#Pw#WltC zFhN*sSYBB7F!E$2?2E83!{&y~4_gpcAJ!PQHf(*^#;{Fco5Qw-Z4cWSb|&mv*dwJ> znXjx;j!=$Pj!}+NV&!<{3}wA?k#dQ0xpJj)wQ{p^pYpKsi1L{7gz}v7yz*D&CFK?6 zE#++$Pvx%)P)SrFDyK}PP{pYdR613%Dn*s1va0N=d{u#}SXHVjSM^f$QT0<*sRpV> zsm7@4R9H1ZHBmKP#i?efW~mxg>s8;VHmkO(cBsBr?N$AtI-@$LIUY&2 zsy|gv!{yh435U55xZpe-{4IsYYtP+Cv?v4pN7zWom_5 zrB3DDeMo&meOi51eO~>W`kMN>`Y-jZ2wp^5M6ZZ}5!DgzMbt(( zBR-Cp88I)SA!1#`fry(Ck0ZSzeIxxN10sVWLnGyp%1CvjCNe!TGqPP|PNXH$7MT~> zKC&>fB+^+HSshsyIW2N=0W7M?MWNAzqho-%zP}5n{Me~lP zkET-7Uo%`YO7p&^PJ=b$HIp>cH8VA{HFGudH7hi0H0v}QG@CVBH9IuBG$%C|G&eMN zH1{+QG>^yoFw z+oDg#&@sU=$uZe6xiR@M1u?}jonyMibdTv7(<^3P%$b;%vEH%%u>r9`v9j2(*znkh z*rZrza;z~nEw&+cP3*eZ4Y8Zzg5x6NbaBaXDRJp>ZQ`=x^5fda6~>jsb%^U6*EMc< z+_bpGafjl5k9!gC74IAGA0H4ei4Tr9#OK84#}~vG$Ct%-iZ73^i0>2MFMdG$p!kvT z6XNH`?~Okie>VPn{Kfdo@i*fi$Nv}qB>tJ!QybvaO0>b+P_0a>(8g%vwFz3CHd&jZ zP1ELREn1t_uI;GpqV1;bt}WMAXsflOwPUn(TBnxPPS8%)PStYSS=ukP^R!=SS8F$E zcWU=)_iGPm4{Cqbp4Fbyp4a}Vy{)~c{agE3`&9cP0VMb&_$Bx!1SE7$=#$Vlp?`vN zV8Zr`io z;^o9^iGL>EOuU`=B=MyV>G(Q<&PONIiF8U`vaYkPr*5#WMmJnHN>``Dx(T|8y2-jm z-74K0-Fn?d-9Ft>-3i@k-C5oFq_CuDXOb}~BdKjtc9J#8p5#a>Na~REPSVh%F-adJ zElOIMbSUXc(w(HcN%xW-B)!yo>;3d1eV{&AFV!pbary*(lHQa+Ai^mFt- z>K`R*l8ch7l1C(uP9B@=Odg;7LGtY6`s5|a%ad0nf1SKFc~|nDo zTx;B5++_UDxXrlJxZAkTc))2qWPD)!*ZA1@)c7I=rtngj6hVqliZDf-B1s8Jk)?#C zgr`KNM5n~2q^6{&WTv!B*_m=US*d=sxb92^)*$Q2AXP3b*2wZoN1nEfvLf?*tE>F&a~0=t?4_{ zHq#E%IWsW(np4bK<^pq9b6@iibB%epd6apK`2+Ju=1;~qO_mf#*$|# zwREs_vUIU@v-Gy~wNzOKTB zx16{9X}NFt+iCgN^2qX^6T31^)S@&3fvi@SdYQ1K?ZoOf>Y5m9g z$ojZ33IvrnJS_;%r)5qAkgmVQXu1X4_0Qt1Z`7Z0m08XREc<*_<}kHo-R0 zHrY1KHp4c{_N8sEZISJ3+h*H7+Y#F_+X>q#+Zo#>+i$jOw(GXPY`1Lx+Fs^*=1OwI za>H{YbE9+Pat*nuxf!`_a;n?*#3^azkRfQtleoJZ=Y!Y*gnZV**?wQU|(!s zYF}<&WnW`oZ~w;rt^GUu9{Umdb^D7vab9#@c3#)K>by01oAS2j{g8Jm?|k0HyeoOX z=iSV^lXpMwpS*|pG5MDK?)iQ5-^;JfcaF?|Kff*?=a0{yl0Pf|%lvuy3-XubFVA0< zzb1cO{x1#>hr!X-VQ~~W-gWeL^mSA@204Z~MmR=0#yZA1K5~5GnBth{Xml)bEO)GO zY;bIHeCOEa*x~rWanNzv@tfm@`L z(dwd2Mca#Z7acD;S#+W3Qqh&7t3|hpVKJ|mDHas_6bp;R#ggKXVp(xmv8p(sSXZns zHWp7Po?1M;ct-IT#W#u{7C$b2QvAFmucV+;NtcptCEZIJO4gLDE7?%8sZ>&`E{!aW pDvd3jR{B-x!qSG)#bx(9P#ruv_%{7T1VG6B$sBQiw!C)`{(pM`T4(?O diff --git a/TabletDemo/TabletDemo/ConfigurableTableViewCell.swift b/TabletDemo/TabletDemo/ConfigurableTableViewCell.swift index 07be0a2..215a443 100644 --- a/TabletDemo/TabletDemo/ConfigurableTableViewCell.swift +++ b/TabletDemo/TabletDemo/ConfigurableTableViewCell.swift @@ -29,6 +29,6 @@ class ConfigurableTableViewCell: UITableViewCell, ConfigurableCell { @IBAction func buttonClicked(sender: UIButton) { - Action(key: kConfigurableTableViewCellButtonClickedAction, sender: self).perform() + Action(key: kConfigurableTableViewCellButtonClickedAction, sender: self).invoke() } } \ No newline at end of file diff --git a/TabletDemo/TabletDemo/CustomTableActions.swift b/TabletDemo/TabletDemo/CustomTableActions.swift index c586a75..5466099 100644 --- a/TabletDemo/TabletDemo/CustomTableActions.swift +++ b/TabletDemo/TabletDemo/CustomTableActions.swift @@ -15,6 +15,6 @@ extension TableDirector { public func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { - performAction(.custom(kTableDirectorDidEndDisplayingCell), cell: cell, indexPath: indexPath) + invokeAction(.custom(kTableDirectorDidEndDisplayingCell), cell: cell, indexPath: indexPath) } } \ No newline at end of file