Проблема ScrollView ... нужно перейти к точному местоположению - PullRequest
0 голосов
/ 24 июня 2011

Scrollviewcustomcontrol не отправляет правильный идентификатор для отображения желаемого результата.У нас есть два текстовых просмотра, показывающие 4 фрагмента статей в scrollview.Они являются подпредставлениями scrollview.Теперь, нажимая на них, я хочу открыть страницу с подробностями этой статьи вместе со скроллером, чтобы все новости можно было просматривать / прокручивать в полной форме.ScrollerView работает, работает с подкачкой страниц и показывает все записи с самого начала.Это просто не идет к той статье, на которую мы нажали.Я пытался передать значения через текстовые представления и назначенные ему кнопки.Но он может просто передавать два значения, так как у нас есть два textviews ... и есть четыре статьи ... статья 3 передает идентификатор статьи № 1. А статья 4 передает идентификатор статьи № 2. Есть идеи?

    - (IBAction) tappedItemAtIndex:(id)sender {

UIButton *tappedButton = (UIButton*) sender;
NSInteger selectedIndex = [tappedButton tag];

}

    int j=0;
    for (int i = 0; i < rowOne.count; i++) {

        if (j==1) {

            j++;


        }

        count =i+1;
    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * i;
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;
    UIView*subView=[[UIView alloc ]initWithFrame:frame];
    [self.scrollView addSubview:subView];

    CGRect myframe=CGRectMake(107, 46, 258, 128);        

    //CGRect myframe=CGRectMake(13, 46, 352, 128);
    Book*book=[rowOne objectAtIndex:i];
    UIButton*backViewButton=[UIButton buttonWithType:UIButtonTypeCustom];

     backViewButton.frame=CGRectMake(107, 46, 258, 128);    
    [backViewButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];



        buttontitle=book.title;

        [backViewButton addTarget:self action:@selector(tappedItemAtIndex:)forControlEvents:UIControlEventTouchUpInside];    
        [backViewButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [backViewButton setTitle:buttontitle forState:UIControlStateNormal];
        [subView addSubview:backViewButton];


        backViewButton.tag=j;


        j++;

        Book*book1=[rowOneSecond objectAtIndex:i];
        UIButton*backViewButton1=[UIButton buttonWithType:UIButtonTypeCustom];

        backViewButton1.frame=CGRectMake(531, 99, 300, 100);    
        [backViewButton1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

        NSString*title=book1.title;

        backViewButton1.tag=j;

        [backViewButton1 addTarget:self action:@selector(tappedItemAtIndex:)forControlEvents:UIControlEventTouchUpInside];    
        [backViewButton1 setTitle:title forState:UIControlStateNormal];
        [subView addSubview:backViewButton1];                                               

} 

Ответы [ 3 ]

1 голос
/ 24 июня 2011

Чтобы прокрутить содержимое на основе страниц, сохраните номер страницы в виде скроллера. Когда вы нажимаете кнопку «следующая страница» или как-то прокручиваете до следующей страницы, увеличиваете номер страницы и затем каждый раз, когда вы загружаете страницу, звоните:

- (void)loadPage:(NSInteger)pageNumber
{
    // textViews is an NSArray of the 2 textviews you have in your scroller view
    // articles is an NSArray in scrollerview containing all articles as strings
    unsigned int i, article;
    for(i = 0; i < [textViews count]; ++i)
    {
        article = pageNumber*[textViews count]+i;
        if(article < [articles count])
        {
            [(UITextView *)[textViews objectAtIndex:i]
             setText:[articles objectAtIndex:article]];
        } else {
            [(UITextView *)[textViews objectAtIndex:i]
             setText:@""]; // blank pages, because we're at the end
        }
    }
}
1 голос
/ 24 июня 2011

Вы пытались установить тег для textViews.Например, когда вы добавляете их в scrollview, я предполагаю, что вы запускаете цикл, поэтому добавьте textView к кнопке, а затем добавьте эту кнопку в scrollview и назначьте tag = index (переменная приращения цикла).Добавить цель к кнопке.Оттуда вы можете получить тег кнопки, а затем передать его в суперкласс, создав протокол делегата.

Обновление

// Я предполагаю, что у вас есть этот типфункции, связанной с touchUpInside каждой кнопки.

- (IBAction) tappedItemAtIndex:(id)sender {
    UIButton *tappedButton = (UIButton*) sender;
    NSInteger selectedIndex = [tappedButton tag];

}
0 голосов
/ 24 июня 2011

Существует свойство UIScrollView contentOffSet,

CGPointMake, которое является точной точкой, которую вам нужно прыгнуть

scrollView.contentOffSet = CGPointMake();

, это полезно для вас, я реализовал ранее ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...