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;
}

滚动视图.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)sender;

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 回答
0

检查容器视图/ tableView(如果存在)的顶部和底部约束。两者都不得附有顶部/底部布局指南。用容器边距附加它们。

于 2017-02-09T09:48:03.743 回答