Expedia app sectionIndex:他们是如何做到的?

时间:2011-07-07 15:58:10

标签: iphone xcode uitableview

我注意到Expedia应用程序(http://a5.mzstatic.com/us/r1000/027/Purple/4c/f4/6c/mzl.wcipbyyg.320x480-75.jpg)在酒店列表中为UITableView提供了自定义的sectionIndex。 (附图)

我认为它可能是一个自定义视图,可能是一个垂直的UISlider,但据我所知,UISlider无法识别幻灯片上的触摸事件,只是拖动它们。

那么,他们是怎么做到的?一系列垂直按钮?但是,在这种情况下,如何识别拖动事件?

我想复制那个控件,但我需要一些提示;)

感谢

1 个答案:

答案 0 :(得分:1)

有多种方法可以达到这种效果。假设你有一个从nib文件初始化的self.view并且它是普通的UIView,你可以把这段代码放到viewDidLoad中:

- (void)viewDidLoad
{
    CGRect tvFrame = self.view.frame;
    tvFrame.origin = CGPointZero;
    UITableView* tv = [[UITableView alloc] initWithFrame:self.view.frame];
    tv.delegate = self;
    tv.dataSource = self;
    tv.showsVerticalScrollIndicator = NO;
    [self.view addSubview:tv];

    CGRect svFrame = CGRectMake(290, 10, 30, 400);
    UIScrollView* sv = [[UIScrollView alloc] initWithFrame:svFrame];
    sv.contentSize = CGSizeMake(10, 780);
    sv.showsVerticalScrollIndicator = NO;
    sv.bounces = YES;

    CGRect vFrame = CGRectMake(10, 380, 10, 20);
    UIView* v = [[UIView alloc] initWithFrame:vFrame];
    v.backgroundColor = [UIColor blueColor];
    [sv addSubview:v];

    [self.view addSubview:sv];
    [super viewDidLoad];
}

这将创建一个带有窄滚动视图的表,表格上方有一个蓝色矩形。现在,您可以单独滚动两个滚动视图(该表也是滚动视图)。

然后,您必须通过UIScrollViewDelegate设置委托并接收滚动事件。当其中一个滚动视图开始拖动时,您必须开始设置另一个滚动视图的偏移量。