【问题标题】:Changing page using pagecontroller使用页面控制器更改页面
【发布时间】:2011-10-10 07:21:22
【问题描述】:

我需要一些帮助来实现在 pagecontroller 上更改页面的功能。我有一个 UIPageController ,页数是可变的。

这是我的代码:

.h**

@property (nonatomic, retain) IBOutlet UIScrollView *vosvehiculeScrollView;
@property (nonatomic, retain) IBOutlet UIPageControl *pageControlVehiculePossedee;
- (IBAction) changePage:(id) sender;
- (void) loadScrollViewWithPage: (int) page;

.m*

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self getVehicules]; 

    vosvehiculeScrollView.pagingEnabled = YES;

    vosvehiculeScrollView.showsHorizontalScrollIndicator = NO;
    vosvehiculeScrollView.showsVerticalScrollIndicator = NO;
    vosvehiculeScrollView.scrollsToTop = NO;

    pageControlVehiculePossedee.numberOfPages=[vehiculesPossede count];

    pageControlVehiculePossedee.currentPage=0;

    [self loadScrollViewWithPage:0];

    votreVehiculeLabel.text=@"Votre véhicule";
    vehiculesPossedesArray = [[NSMutableArray alloc] initWithObjects:@"Annee modele", @"Transmission",@"Carburant", nil];

}

- (void) loadScrollViewWithPage: (int) page {
    if (page < 0) return;
    if (page >= [vehiculesPossede count]) return;    

    tableViewVehiculesPossedes=[[UITableView alloc] initWithFrame:CGRectMake(3, 80, 315, 171) style:UITableViewStyleGrouped];
    tableViewVehiculesPossedes.bounces=NO;
    tableViewVehiculesPossedes.backgroundColor=[UIColor clearColor];
    [tableViewVehiculesPossedes setDelegate:self];
    [tableViewVehiculesPossedes setDataSource:self];        
    [self.vosvehiculeScrollView addSubview:tableViewVehiculesPossedes];

    nameVehiculeLabel.text=[[vehiculesPossede objectAtIndex:page] valueForKey:@"modele"];

    self.transmissionString=[[vehiculesPossede objectAtIndex:page]valueForKey:@"transmision"];
    self.carburantString=[[vehiculesPossede objectAtIndex:page] valueForKey:@"carburant"];    
    self.anneeModelString=[[vehiculesPossede objectAtIndex:page] valueForKey:@"modele_annee"];
    self.anneeString=[[vehiculesPossede objectAtIndex:page]valueForKey:@"annee"];

    if(page==0){
        NSLog(@"0");  
    }
    else NSLog(@"1");

}


- (IBAction) changePage:(id) sender
{
    NSLog(@"page changed");
   /* CGRect frame;
    frame.origin.x = self.vosvehiculeScrollView.frame.size.width * self.pageControlVehiculePossedee.currentPage;
    frame.origin.y = 0;
    frame.size = self.vosvehiculeScrollView.frame.size;
    NSLog(@"current page %d",pageControlVehiculePossedee.currentPage);
    [self.vosvehiculeScrollView scrollRectToVisible:frame animated:YES];*/

    [self loadScrollViewWithPage:1];
    pageControlUsed = YES;    
}

我得到Program received signal: “EXC_BAD_ACCESS”。我应该如何实现 changePage 方法以使其正常?请帮忙..

提前谢谢...

【问题讨论】:

  • 您在哪里收到Program received signal: “EXC_BAD_ACCESS”?什么时候?
  • 我到达 [self loadScrollViewWithPage:1];从方法 changePage 当我选择页面控制器转到下一页时
  • vehiculesPossede 有效吗?你在哪里设置的?
  • 是的,它是有效的。 vehiculesPossede 是我从 php 脚本收到的 NSArray
  • 所以如果你在[self loadScrollViewWithPage:1];之前和NSLog(@"page changed");之后调用[vehiculesPossede count],应用程序不会在[vehiculesPossede count]在线崩溃?

标签: iphone objective-c ios uipagecontrol


【解决方案1】:

我照着做的

- (IBAction)actionBtnNext:(id)sender
   {    
       if (pageNumber == kNumberOfPages-2) {
            pageNumber = kNumberOfPages-2;
       }
       else {
            pageNumber++;
       }

       CGFloat pageWidth = scrollView.frame.size.width*pageNumber;
       [scrollView setContentOffset:CGPointMake(pageWidth,0.0) animated:YES];
 }

如果您有任何问题,请告诉我。

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    相关资源
    最近更新 更多