Reputation: 43
Hi im new for iphone application development.i wanna use page controller for my uiscroll view.In single view im using two scroll views and two page controls.i setted pagecontrol with following codings but only for two pages its working fine.but i wanna add more than two pages for a scroll view whic consist of static buttons.![enter image description here][1]
//
// newsampleViewController.m
// newsample
//
// Created by SmartJobDevelopers on 4/3/12.
// Copyright 2012 __MyCompanyName__. All rights reserved.
//
#import "newsampleViewController.h"
@implementation newsampleViewController
@synthesize scr_anger;
@synthesize scr_sketch;
@synthesize pageControl;
@synthesize pageControl1;
/*
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
*/
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[self setupPage];
//[scr_anger setScrollEnabled:YES];
//[scr_anger setContentSize:CGSizeMake(1290,15)];
//[scr_sketch setScrollEnabled:YES];
//[scr_sketch setContentSize:CGSizeMake(1310,15)];
[super viewDidLoad];
}
-(IBAction)buttonPressed:(id)sender {
i_curtag=(int)[sender tag];
//NSLog(@"%d",i_curtag);
[self fn_btnOperation];
//[self opt:str_filename];
//NSLog(@"str_filename:%@",str_filename);
}
-(void)fn_btnOperation
{
if (i_curtag==1)
{
//str_filename=[NSString stringWithFormat:@"%d.png",i_curtag];
//NSLog(@"str_filename:%@",str_filename);
str_filename=@"1.png";
// NSLog(@"1.png");
}
else if(i_curtag==2)
{
str_filename=@"2.png";
//NSLog(@"2.png");
}
else if(i_curtag==3)
{
str_filename=@"3.png";
//NSLog(@"3.png");
}
else if(i_curtag==4)
{
str_filename=@"4.png";
// NSLog(@"4.png");
}
else if(i_curtag==5)
{
str_filename=@"5.png";
//NSLog(@"5.png");
}
else if(i_curtag==6)
{
str_filename=@"6.png";
//NSLog(@"6.png");
}
else if(i_curtag==7)
{
str_filename=@"7.png";
// NSLog(@"7.png");
}
else if(i_curtag==8)
{
str_filename=@"8.png";
//NSLog(@"8.png");
}
else if(i_curtag==9)
{
str_filename=@"9.png";
// NSLog(@"9.png");
}
else if(i_curtag==10)
{
str_filename=@"10.png";
// NSLog(@"10.png");
}
[self opt:str_filename];
}
-(id)opt:(NSString*)filename
{
//NSLog(@"filename:%@",filename);
str_filename=filename;
UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@""delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Save Image" otherButtonTitles:@"Mail Image",nil];
popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[popupQuery showInView:self.view];
[popupQuery release];
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex1
{
if (buttonIndex1 == 0)
{
// NSLog(@"str_filename in actionsheet:%@",str_filename);
[self savesingleimage];
// NSLog(@"save");
}
else if (buttonIndex1 == 1)
{
//NSLog(@"str_filename in else:%@",str_filename);
[self fmail];
//NSLog(@"mail");
}
}
-(void)fmail
{
//NSLog(@"str_filename:%@",str_filename);
NSMutableString *emailBody = [[[NSMutableString alloc] initWithString:@"<html><body><p>"] retain];
[emailBody appendString:@"<b><u>EMOTIONAL ICONS</u></b><br><br>"];
[emailBody appendString:@"</p></body></html>"];
MFMailComposeViewController *emailDialog = [[MFMailComposeViewController alloc] init];
UIImage *icon1 = [UIImage imageNamed:str_filename];
NSData *imageData1 = UIImageJPEGRepresentation(icon1, 1);
[emailDialog addAttachmentData:imageData1 mimeType:@"image/jpg" fileName:str_filename];
emailDialog.mailComposeDelegate =self;
[emailDialog setSubject:@"Emotional Icons"];
[emailDialog setMessageBody:emailBody isHTML:YES];
[emailDialog.navigationBar setTintColor:[UIColor blackColor]];
[self presentModalViewController:emailDialog animated:YES];
[emailDialog release];
[emailBody release];
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Status:" message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
switch (result) {
case MFMailComposeResultCancelled:
alert.message = @"Message Canceled";
break;
case MFMailComposeResultSaved:
alert.message = @"Message Saved";
break;
case MFMailComposeResultSent:
alert.message = @"Message Sent";
break;
case MFMailComposeResultFailed:
alert.message = @"Message Failed";
break;
default:
alert.message = @"Message Not Sent";
break;
}
[self dismissModalViewControllerAnimated:YES];
[alert show];
[alert release];
}
-(void)savesingleimage{
// NSLog(@"str_filename in save: %@",str_filename);
UIImage *image1 = [UIImage imageNamed:str_filename];
UIImageWriteToSavedPhotosAlbum(image1, nil, nil, nil);
UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Saved"
message:@"Image Saved into PhotoAlbum"
delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(110, 170, 50, 50)];
NSString *path = [[NSString alloc] initWithString:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:str_filename]];
UIImage *bkgImg = [[UIImage alloc] initWithContentsOfFile:path];
[imageView setImage:bkgImg];
[bkgImg release];
[path release];
[successAlert addSubview:imageView];
[imageView release];
[successAlert show];
[successAlert release];
}
#pragma mark -
#pragma mark The Guts
- (void)setupPage
{
scr_anger.delegate = self;
scr_sketch.delegate =self;
//[self.scr_anger setBackgroundColor:[UIColor blackColor]];
[scr_anger setCanCancelContentTouches:NO];
[scr_sketch setCanCancelContentTouches:NO];
scr_anger.indicatorStyle = UIScrollViewIndicatorStyleWhite;
scr_anger.clipsToBounds = YES;
scr_anger.scrollEnabled = YES;
scr_anger.pagingEnabled = YES;
scr_sketch.indicatorStyle = UIScrollViewIndicatorStyleWhite;
scr_sketch.clipsToBounds = YES;
scr_sketch.scrollEnabled = YES;
scr_sketch.pagingEnabled = YES;
self.pageControl.numberOfPages = 2;
self.pageControl1.numberOfPages = 2;
[scr_anger setScrollEnabled:YES];
[scr_sketch setScrollEnabled:YES];
[scr_anger setContentSize:CGSizeMake(1290,15)];
[scr_sketch setContentSize:CGSizeMake(1940,15)];
}
#pragma mark -
#pragma mark UIScrollViewDelegate stuff
- (void)scrollViewDidScroll:(UIScrollView *)_scrollView
{
// NSLog(@"scrollview val=%d",_scrollView.tag);
i=_scrollView.tag;
// NSLog(@"i=%d",i);
if (_scrollView.tag==101) {
if (pageControlIsChangingPage) {
return;
}
/*
* We switch page at 50% across
*/
//scr_anger.frame = CGRectMake(0, 0, 320, 0);
CGFloat pageWidth =scr_anger.frame.size.width;
//NSLog(@"pagewidth=%f",pageWidth);
int page = floor((scr_anger.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
// NSLog(@"page=%d",page);
pageControl.currentPage = page;
}
else if(_scrollView.tag==102)
{
if (pageControlIsChangingPage) {
return;
}
/*
* We switch page at 50% across
*/
CGFloat pageWidth =scr_sketch.frame.size.width;
int page = floor((scr_sketch.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl1.currentPage = page;
NSLog(@"page=%d",page);
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)_scrollView
{
pageControlIsChangingPage = NO;
}
#pragma mark -
#pragma mark PageControl stuff
- (IBAction)changePage:(id)sender
{
/*
* Change the scroll view
*/
//NSLog(@"i=%d",i);
if (i==101) {
CGRect frame = scr_anger.frame;
//pageControl.frame = CGRectMake(0, 390, 320, 15);
frame.origin.x = frame.size.width * pageControl.currentPage;
frame.origin.y = 0;
[scr_anger scrollRectToVisible:frame animated:YES];
/*
* When the animated scrolling finishings, scrollViewDidEndDecelerating will turn this off
*/
pageControlIsChangingPage = YES;
}
else if(i==102)
{
CGRect frame1 = scr_sketch.frame;
frame1.origin.x = frame1.size.width * pageControl1.currentPage;
frame1.origin.y = 0;
[scr_sketch scrollRectToVisible:frame1 animated:YES];
pageControlIsChangingPage = YES;
}
}
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
- (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)viewDidUnload {
[scr_anger release];
[scr_sketch release];
[pageControl release];
[pageControl1 release];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
Upvotes: 2
Views: 407
Reputation: 2210
This is a relly good tutorial about UIScrollView&IPageControl combination. But I my self look for a tutorail for more dynamic designs(like main page of ios applications-i increments-decrements automatically)
Upvotes: 2
Reputation: 8501
In your setupPage:
method, You have a code to allow number of pages like this.
self.pageControl.numberOfPages = 2;
self.pageControl1.numberOfPages = 2;
If you want to increase a numberOfPages, then increase the numberOfPages in these lines.
Upvotes: 0
Reputation: 417
Here's a information : http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html
Upvotes: 0