У меня есть решение для этого.
Поместите табличное представление как боковое меню слева.
Поместите представление прокрутки на вершине.
Добавить содержимое в представление прокрутки.
Вид прокрутки будет охватывать вид таблицы.
Установите ширину содержимого размера представления прокрутки на сумму ширины содержимого и ширины боковой панели.
Позиция контента находится в (ширина боковой панели, 0). Вы можете перетащить его, чтобы закрыть или открыть боковую панель.
Проблема в том, что табличному представлению не удалось получить событие касания, поскольку оно охватывается представлением прокрутки.
Итак, я реализую подкласс.
@interface UICascadeScrollView : UIScrollView {
UIView* passthroughView_;
}
@property(nonatomic,assign) IBOutlet UIView* passthroughView;
@end
@implementation UICascadeScrollView
@synthesize passthroughView = passthroughView_;
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
for( UIView* v in self.subviews ) {
if( CGRectContainsPoint( v.frame, point ) ) {
// one of the sub view could accept the touch event
return [super hitTest:point withEvent:event];
}
}
CGPoint newPoint = [self convertPoint:point toView:passthroughView_];
return [passthroughView_ hitTest:newPoint withEvent:event];
}
- (void)dealloc {
self.passthroughView = nil;
[super dealloc];
}
@end
Измените класс scrollview на UICascadeScrollView и установите passthroughView на боковую панель.
Вот и все.
=============================================== ===================================
Образец трех каскадных слоев с табличным представлением в качестве боковой панели.
git@github.com: slavikshen / CascadeScrollView.git
https://github.com/slavikshen/CascadeScrollView
Это мой первый коммит на git hub. Пожалуйста скажите мне, если что-то не так.