UIScrollView и UIPageControl в UITableView - PullRequest
1 голос
/ 23 февраля 2011

Я видел много источников, которые говорят, что возможно включить UIScrollView с UIPageControl внутри UITableViewCell , чтобы иметь возможность горизонтальной прокрутки (через список выбираемых изображений), но не могу найти сырых примеров, которые делают то, что я хочу. Мой вид прокрутки «работает», но я не уверен, как двигаться дальше - надеюсь, кто-нибудь может выслать мне несколько советов.

В моем cellForRowAtIndexPath я создаю ячейку и добавляю scrollView и pageControl в качестве подпредставлений.

UITableViewCell *cell = [self.challengeListView dequeueReusableCellWithIdentifier:SubmitChallengeCellIdentifier];
    if(cell == nil){
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SubmitChallengeCellIdentifier] autorelease];
        cell.frame = CGRectMake(0, 0, 1000, 50);
    }   

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, tv.frame.size.width, 50)];
    [scrollView setContentSize:CGSizeMake(1000, 50)];
    [[cell contentView] addSubview:scrollView];

    pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 50, tv.frame.size.width, 50)];
    [pageControl setNumberOfPages:4];
    [[cell contentView] addSubview:pageControl];

Я приложил скриншот того, что отображается

something

нижняя часть основного представления - это мой UITableView, который содержит scrollView / pageControl (и он будет прокручиваться горизонтально, так как я вижу scrollerIndicator, показывающий это), и для его метода установлено следующее:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{   
    return 1;
}   

В представлении «Моя прокрутка» будет отображаться « horizontalScroller », и я могу прокручивать туда-сюда, но, очевидно, там нет содержимого . Как мне заполнить tableView / scrollView, скажем, списком «кликабельных» изображений? Любое направление будет высоко оценено - желательно не «эй, этот парень сделал что-то похожее, посмотрите эту ссылку», но, возможно, больше объяснение того, как эта функциональность должна быть реализована правильно (E ОСОБЕННО в отношении iOS 3.0 + - насколько я понимаю, Apple упростила нашу жизнь в реализации этого)

1 Ответ

1 голос
/ 23 февраля 2011

Я решил свою проблему;возможно, причина, по которой мне никто не ответил, заключается в том, что это незначительная реализация, когда вы понимаете цель каждого представления.

Из cellForRowAtIndexPath: я создал стандарт UITableViewCell, однако я изменил структуру ячейки на свою собственнуюПользовательский фрейм шириной 1000 на 50 высот (удовлетворяющий моим потребностям в проекте).

Затем я создал UIScrollView, установив его следующим образом (имейте в виду, что мой tableView определен в IB, поэтому яЯ сопоставляю некоторые из моих высот / ширины с этими значениями):

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, tv.frame.size.width, 78)];

Затем я создаю желаемый вид изображения (я понимаю, что затем я создам цикл, который делает много изображений и размещает их по всей прокруткеview):

UIImage *image = [UIImage imageNamed:@"dummy.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(0, 0, 80, 78);
[scrollView addSubview: imageView];

Вот часть, которую мне не хватало.После добавления scrollView к содержимому ячейки вам нужно использовать UIPageControl (что мне сначала не казалось очевидным для этой реализации), чтобы настроить фактический эффект "визуальной горизонтальной прокрутки":

   [[cell contentView] addSubview:scrollView];

pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 50, tv.frame.size.width, 50)];
[pageControl setNumberOfPages:4];
[[cell contentView] addSubview:pageControl];

Надеюсь, что это поможет чьему-то поиску - я потратил довольно много времени в Google на поиск примера, который только что объяснил, и у меня не было особой удачи, кроме общего обзора того, как он будет работать.

...