0

UIScorllView と UIPageControl に関するドームをダウンロードしました。UIPageControl が表示されないのはなぜですか? これがコードです。私はIphoneが初めてです。どんな助けでも大歓迎です!

ScrollView.MI は、ResultViewController を ScrollView に配置します。PageControllerでresultViewControllerをスクロールしたい。

- (void)loadScrollViewWithPage:(int)page
{
    if (page < 0)
        return;
    if (page >= pageNumber)
        return;


    ResultViewController *controller = [viewControllers objectAtIndex:page];
    if ((NSNull *)controller == [NSNull null])
    {
        controller = [[ResultViewController alloc] initWithPageNumber:page locations:existLocations];
        [viewControllers replaceObjectAtIndex:page withObject:controller];
        [controller release];
    }

    if (controller.view.superview == nil)
    {
        CGRect frame = scrollView.frame;
        frame.origin.x = frame.size.width * page;
        frame.origin.y = 0;
        controller.view.frame = frame;
        [scrollView addSubview:controller.view];
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    existLocations = [FileManagerUtil readPlistFileForDictionary:@"Locations" fileName:@"CloudCheckLocations.plist"];

    pageNumber = [existLocations count];
    NSMutableArray *controllers = [[NSMutableArray alloc] init];
    for (unsigned i = 0; i < pageNumber; i++)
    {
        [controllers addObject:[NSNull null]];
    }
    self.viewControllers = controllers;
    [controllers release];

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];


    [self.navigationItem setTitle:@"NetWork condition"];
    scrollView.pagingEnabled = YES;
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * pageNumber, scrollView.frame.size.height);
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.showsVerticalScrollIndicator = NO;
    scrollView.scrollsToTop = NO;
    scrollView.delegate = self;

    pageContronl.numberOfPages = pageNumber;
    pageContronl.currentPage = 0;

    [pageContronl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];

    [pageContronl setBackgroundColor:[UIColor blackColor]];
    [self loadScrollViewWithPage:0];
    [self loadScrollViewWithPage:1];
    [scrollView addSubview:pageContronl];

    [self.view addSubview:scrollView];

}



- (void)scrollViewDidScroll:(UIScrollView *)sender
{

    if (pageControlUsed)
    {

        return;
    }

    CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageContronl.currentPage = page;

    [self loadScrollViewWithPage:page - 1];
    [self loadScrollViewWithPage:page];
    [self loadScrollViewWithPage:page + 1];

}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    pageControlUsed = NO;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    pageControlUsed = NO;
}

- (IBAction)changePage:(id)sender
{
    int page = pageContronl.currentPage;

    [self loadScrollViewWithPage:page - 1];
    [self loadScrollViewWithPage:page];
    [self loadScrollViewWithPage:page + 1];

    CGRect frame = scrollView.frame;
    frame.origin.x = frame.size.width * page;
    frame.origin.y = 0;
    [scrollView scrollRectToVisible:frame animated:YES];

    pageControlUsed = YES;
}

ScrollView.h

@interface ScrollViewController : UIViewController<UIScrollViewDelegate>
{
    NSMutableArray *viewControllers;
    NSString *currectNetWork;
    NSString *flag;
    NSString *locationName;

    IBOutlet UIScrollView *scrollView;
    IBOutlet UIPageControl *pageContronl;
    BOOL pageControlUsed;
    int pageNumber;

    NSMutableDictionary *existLocations;

}
@property (nonatomic,retain) NSString *currectNetWork;
@property (nonatomic,retain) NSString *flag;
@property (nonatomic,retain) NSString *locationName;
@property (nonatomic,retain) UIPageControl * pageContronl;
@property (nonatomic,retain) UIScrollView * scrollView;
@property (nonatomic,retain) NSMutableArray *viewControllers;
@property (nonatomic,retain) NSMutableDictionary *existLocations;
  • (IBAction)changePage:(id)送信者;

ResultViewControl.M このメソッドは ScrollView.M によって呼び出されます

- (id)initWithPageNumber:(int)page locations :(NSMutableDictionary *) locations
{
    titilArray = [[NSArray alloc] initWithObjects:@"Today", @"Past 7 Day",@"Past 30 Day",nil];

    if (self = [super initWithNibName:@"ResultViewController" bundle:nil])
    {
        pageNumber = page;
        existLocations = locations;
    }
    return self;
}
4

2 に答える 2

1

pageControl と親ビューの背景色を確認してください。両方が同じ色 (デフォルトでは白) の場合、ページ コントロールは表示されません。

IOS6 では、新しいメソッドpageIndicatorTintColorcurrentPageIndicatorTintColor.

これが役立つことを願っています。

于 2012-11-29T11:27:08.933 に答える