Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 滚动视图滚动时页面控件不更改_Ios_Xcode_Uiscrollview_Uipagecontrol - Fatal编程技术网

Ios 滚动视图滚动时页面控件不更改

Ios 滚动视图滚动时页面控件不更改,ios,xcode,uiscrollview,uipagecontrol,Ios,Xcode,Uiscrollview,Uipagecontrol,我正在尝试向我的滚动视图中添加一个页面控件,并且已经学习了许多web教程,其中大多数都使用与此相同的代码。但是,一旦我将代码放入我的项目中,即使我对代码进行更改以使其工作,它也不会工作。我已经设法使代码在按下页面控件时工作,但是它在页面滚动时不工作。我的问题与类似,尽管答案毫无帮助。这是我的密码: MainViewController.h @interface MainViewController : UIViewController { UIScrollView *svCollegeMain;

我正在尝试向我的滚动视图中添加一个页面控件,并且已经学习了许多web教程,其中大多数都使用与此相同的代码。但是,一旦我将代码放入我的项目中,即使我对代码进行更改以使其工作,它也不会工作。我已经设法使代码在按下页面控件时工作,但是它在页面滚动时不工作。我的问题与类似,尽管答案毫无帮助。这是我的密码:

MainViewController.h

@interface MainViewController : UIViewController
{
UIScrollView *svCollegeMain;
UIScrollView *svCollegePage;
UIPageControl *pcCollege;
UIView *viewP1;
}

@property (nonatomic, retain) IBOutlet UIScrollView* svCollegeMain;
@property (nonatomic, retain) IBOutlet UIScrollView* svCollegePage;
@property (nonatomic, retain) IBOutlet UIPageControl * pcCollege;
- (IBAction)changePage;

@end
和MainViewController.m

@implementation MainViewController

@synthesize svCollegeMain, svCollegePage, pcCollege;

- (void)viewDidLoad 
{
[super viewDidLoad];
self.svCollegeMain.contentSize = CGSizeMake(960, 332);
self.svCollegePage.contentSize = CGSizeMake(320, 500);
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)scrollViewDidScroll:(UIScrollView *)sender
{
CGFloat pageWidth = 320;
int page = floor((svCollegeMain.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pcCollege.currentPage = page;
}

- (IBAction)changePage 
{
CGRect frame;
frame.origin.x = self.svCollegeMain.frame.size.width * self.pcCollege.currentPage;
frame.origin.y = 0;
frame.size = self.svCollegeMain.frame.size;
[self.svCollegeMain scrollRectToVisible:frame animated:YES];
}

#pragma mark - View lifecycle

- (void)viewDidUnload
{
[super viewDidUnload];
self.svCollegeMain = nil;
self.svCollegePage = nil;
self.pcCollege = nil;
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end
如果这有什么不同,我的视图是用一个视图设置的,然后在这个视图中设置一个主滚动视图和页面控件,在主滚动视图中设置另一个视图和滚动视图(彼此相邻),最后在第二个滚动视图中设置一个最终视图(都在IB中,不需要太多代码),所有东西都在IB中链接。

试试这个

头文件:

@interface DemoPageControlViewController : UIViewController <UIScrollViewDelegate>
{
IBOutlet UIScrollView *scrollView;
IBOutlet UIPageControl *pageControl;
BOOL pageControlUsed;
NSMutableArray *imageArray;
int  pageNumber;


}


@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIPageControl *pageControl;
@property (nonatomic, retain) NSMutableArray *imageArray;


- (IBAction) changePage:(id)sender;
@界面DemoPageControlViewController:UIViewController
{
IBUIScrollView*滚动视图;
IBUIPageControl*pageControl;
使用BOOL-pagecontrol;
NSMutableArray*imageArray;
整数页码;
}
@属性(非原子,保留)UIScrollView*scrollView;
@属性(非原子,保留)UIPageControl*pageControl;
@属性(非原子,保留)NSMutableArray*imageArray;
-(iAction)更改页:(id)发件人;
实施文件:

#import "DemoPageControlViewController.h"

@implementation DemoPageControlViewController
@synthesize pageControl, scrollView, imageArray;
- (void)viewDidLoad 
{
[super viewDidLoad];

CGRect frame;
frame.origin.x = 0;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;

imageArray = [[NSMutableArray alloc]init];
[imageArray addObject:@"small_one.png"];
[imageArray addObject:@"small_two.png"];
[imageArray addObject:@"small_three.png"];
[imageArray addObject:@"small_four.png"];


// add the last image to first
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:       [imageArray objectAtIndex:([imageArray count] -1)]]];
imageView.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release]; 

for(int i = 0; i < imageArray.count; i++)
{
    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:i]]];
    imageView.frame = CGRectMake((scrollView.frame.size.width * i ) + 320   , 0, scrollView.frame.size.width, scrollView.frame.size.height);
    [self.scrollView addSubview:imageView];
    [imageView release];
}
// add the first image to last
imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:0]]];
imageView.frame = CGRectMake(scrollView.frame.size.width * ([imageArray count]+1), 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release]; 

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * ([imageArray count]+ 2), self.scrollView.frame.size.height);
[scrollView setContentOffset:CGPointMake(0, 0)];
[self.view addSubview:scrollView];
[self.scrollView scrollRectToVisible:CGRectMake(scrollView.frame.size.width,0,scrollView.frame.size.width,scrollView.frame.size.height) animated:NO]; 
}

- (IBAction)changePage :(id)sender
{
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage ;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
}


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

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

NSLog(@"%f", self.scrollView.contentOffset.x);

CGFloat pageWidth = self.scrollView.frame.size.width;
//pageNumber = floor((self.scrollView.contentOffset.x - pageWidth / ([imageArray count]+2)) / pageWidth) + 1  ;
pageNumber = self.scrollView.contentOffset.x / pageWidth;

if(pageNumber ==  0)
{
    [self.scrollView scrollRectToVisible:CGRectMake((self.scrollView.frame.size.width * [imageArray count]), 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) animated:NO];
    pageNumber = [imageArray count];
    //self.pageControl.currentPage = pageNumber;
}
else if(pageNumber == ([imageArray count]+1))
{
    [self.scrollView scrollRectToVisible:CGRectMake(self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) animated:NO];
    pageNumber = 1;
    //self.pageControl.currentPage = pageNumber;
}

self.pageControl.currentPage = pageNumber - 1;

  }

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

  }
#导入“DemoPageControlViewController.h”
@DemoPageControlViewController的实现
@综合pageControl、scrollView、imageArray;
-(无效)viewDidLoad
{
[超级视图下载];
CGRect帧;
frame.origin.x=0;
frame.origin.y=0;
frame.size=self.scrollView.frame.size;
scrollView.showsVerticalScrollIndicator=否;
scrollView.showsHorizontalScrollIndicator=否;
imageArray=[[NSMutableArray alloc]init];
[imageArray addObject:@“small_one.png”];
[imageArray addObject:@“small_two.png”];
[imageArray addObject:@“small_three.png”];
[imageArray addObject:@“small_four.png”];
//将最后一个图像添加到第一个
UIImageView*imageView=[[UIImageView alloc]initWithImage:[UIImageName:[imageArray objectAtIndex:([imageArray count]-1)];
imageView.frame=CGRectMake(0,0,scrollView.frame.size.width,scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[图像视图发布];
对于(int i=0;i
这段代码运行良好。试试这个

头文件:

@interface DemoPageControlViewController : UIViewController <UIScrollViewDelegate>
{
IBOutlet UIScrollView *scrollView;
IBOutlet UIPageControl *pageControl;
BOOL pageControlUsed;
NSMutableArray *imageArray;
int  pageNumber;


}


@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIPageControl *pageControl;
@property (nonatomic, retain) NSMutableArray *imageArray;


- (IBAction) changePage:(id)sender;
@界面DemoPageControlViewController:UIViewController
{
IBUIScrollView*滚动视图;
IBUIPageControl*pageControl;
使用BOOL-pagecontrol;
NSMutableArray*imageArray;
整数页码;
}
@属性(非原子,保留)UIScrollView*scrollView;
@属性(非原子,保留)UIPageControl*pageControl;
@属性(非原子,保留)NSMutableArray*imageArray;
-(iAction)更改页:(id)发件人;
实施文件:

#import "DemoPageControlViewController.h"

@implementation DemoPageControlViewController
@synthesize pageControl, scrollView, imageArray;
- (void)viewDidLoad 
{
[super viewDidLoad];

CGRect frame;
frame.origin.x = 0;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;

imageArray = [[NSMutableArray alloc]init];
[imageArray addObject:@"small_one.png"];
[imageArray addObject:@"small_two.png"];
[imageArray addObject:@"small_three.png"];
[imageArray addObject:@"small_four.png"];


// add the last image to first
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:       [imageArray objectAtIndex:([imageArray count] -1)]]];
imageView.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release]; 

for(int i = 0; i < imageArray.count; i++)
{
    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:i]]];
    imageView.frame = CGRectMake((scrollView.frame.size.width * i ) + 320   , 0, scrollView.frame.size.width, scrollView.frame.size.height);
    [self.scrollView addSubview:imageView];
    [imageView release];
}
// add the first image to last
imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:0]]];
imageView.frame = CGRectMake(scrollView.frame.size.width * ([imageArray count]+1), 0, scrollView.frame.size.width, scrollView.frame.size.height);
[self.scrollView addSubview:imageView];
[imageView release]; 

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * ([imageArray count]+ 2), self.scrollView.frame.size.height);
[scrollView setContentOffset:CGPointMake(0, 0)];
[self.view addSubview:scrollView];
[self.scrollView scrollRectToVisible:CGRectMake(scrollView.frame.size.width,0,scrollView.frame.size.width,scrollView.frame.size.height) animated:NO]; 
}

- (IBAction)changePage :(id)sender
{
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage ;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
}


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

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

NSLog(@"%f", self.scrollView.contentOffset.x);

CGFloat pageWidth = self.scrollView.frame.size.width;
//pageNumber = floor((self.scrollView.contentOffset.x - pageWidth / ([imageArray count]+2)) / pageWidth) + 1  ;
pageNumber = self.scrollView.contentOffset.x / pageWidth;

if(pageNumber ==  0)
{
    [self.scrollView scrollRectToVisible:CGRectMake((self.scrollView.frame.size.width * [imageArray count]), 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) animated:NO];
    pageNumber = [imageArray count];
    //self.pageControl.currentPage = pageNumber;
}
else if(pageNumber == ([imageArray count]+1))
{
    [self.scrollView scrollRectToVisible:CGRectMake(self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) animated:NO];
    pageNumber = 1;
    //self.pageControl.currentPage = pageNumber;
}

self.pageControl.currentPage = pageNumber - 1;

  }

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

  }
#导入“DemoPageControlViewController.h”
@DemoPageControlViewController的实现
@综合pageControl、scrollView、imageArray;
-(无效)viewDidLoad
{
[超级视图下载];
CGRect帧;
frame.origin.x=0;
frame.origin.y=0;
frame.size=self.scrollView.frame.size;
scrollView.showsVerticalScrollIndicator=否;
scrollView.showsHorizontalScrollIndicator=否;
imageArray=[[NSMutableArray alloc]init];
[imageArray addObject:@“small_one.png”];
[imageArray addObject:@“small_two.png”];
[imageArray addObject:@“small_three.png”];
[imageArray addObject:@“small_four.png”];
//将最后一个图像添加到第一个