PageController и TableView - PullRequest
       4

PageController и TableView

0 голосов
/ 10 октября 2011

У меня есть контроллер страницы, и этот метод pageAction определен так:

-(void)pageAction:(UIPageControl*)control
{       
    NSLog(@"page changed"); 
    [self getVehicules];
    [self.tableViewVehiculesPossedes release];

    int page = pageControlVehiculePossedee.currentPage;
    NSLog(@"page %d", page);
    [self loadScrollViewWithPage:page];

    CGRect frame = pageControlVehiculePossedee.frame;
    frame.origin.x = (vosvehiculeScrollView.frame.size.width * page);
    [vosvehiculeScrollView scrollRectToVisible:frame animated:YES];

    pageControlUsed = YES;
}

Каждый раз, когда я меняю страницу, мне нужно отобразить табличное представление с некоторыми ярлыками. Вот код:

- (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];
    [pageControlVehiculePossedee addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];

    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.tag=page;
    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"); 
        self.transmissionString=@"ttt";
    }
    else NSLog(@"1");
}

Проблема в том, что даже если я добавлю [self.tableViewVehiculesPossedes release]; к методу страницы изменений, на табличном представлении появится наложение, а текст на метках наложится. Что я могу сделать с таблицей, чтобы она исчезла при отображении новой страницы?

Пожалуйста, помогите мне .. Я провел много времени с этим: |

1 Ответ

0 голосов
/ 10 октября 2011

Если я правильно понял, я думаю, что вы должны оставить ivar для таблицы, которую вы создаете с помощью alloc в loadScrollViewWithPage, а при переключении страницы вы должны удалить ее из представления, вызвав:

[mytableview removeFromSuperview];

И, скорее всего, вы должны позаботиться о том, чтобы выпустить его, а я не вижу его в вашем коде.

...