私がやりたいことは。
- scrollView のデリゲート メソッドをオーバーライドする (例: scrollViewDidEndDragging)
- 私のscrollViewとtableViewに使用します
私が今持っているのは、
- MyScrollView のデリゲートは scrollViewDidEndDragging をオーバーライドします
- MySuperTableViewController (UITableView のサブクラス) は scrollViewDidEndDragging をオーバーライドし、MyChildTableViewController が MySuperTableViewController をサブクラス化できるようにします
どうやら、同じ scrollViewDidEndDragging コードが 2 か所に重複しているようですが、コードを 1 か所に配置して共有するにはどうすればよいですか?
以下は、スクロールビューとテーブルビューで共有したいコードです
#import "OverlayTableViewController.h"
@interface OverlayTableViewController()
{
CADisplayLink *_displayLink;
}
@end
@implementation OverlayTableViewController
-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView
{
[self startDisplayLinkIfNeeded];
}
- (void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate
{
if(!decelerate)
[self stopDisplayLink];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[self stopDisplayLink];
}
- (void)startDisplayLinkIfNeeded
{
if(!_displayLink)
{
_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(display)];
[_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:UITrackingRunLoopMode];
}
}
- (void)stopDisplayLink
{
[_displayLink invalidate];
_displayLink = nil;
}
- (void)display
{
//
}
@end