2

在我的程序中,我在视图中创建了一个项目列表。当我单击特定项目时,我会打开另一个视图以查看与该项目相关的信息。

但是当我回到上一个视图时,导航控制器并没有从堆栈中删除视图,事实上,在我返回到上一个视图控制器之后,如果我点击另一个或相同的项目来显示信息,导航控制器视图是相同的数字加 1,当我尝试返回时,他首先加载相同的项目信息视图,然后加载项目列表。

例子:

查看项目列表:查看 A

查看信息:查看B

第 1 步:在视图 A 中加载项目

步骤 2:单击视图 A 中的项目 1 并将视图 B 推入堆栈

第 3 步:从 A 中弹出 B

第 4 步:单击视图 A 中的项目 2 并将视图 B 推入堆栈

在第 4 步,我的筹码是:A - B - B.... 为什么?

编辑:

这是第 2 步:

-(void) clickOnSpesa:(NSNotification*)notification
{
    NSDictionary *userInfo = notification.userInfo;
    Spesa *spesa = [userInfo objectForKey:@"notaSpesa"];

    //Cambio View
    NuovaSpesa *viewSpesa = [[NuovaSpesa alloc] initWithNibName:nil bundle:nil];
    NSLog(@"creo la view per visualizzare la spesa");
    [viewSpesa initWithSpesa:spesa];
    [self.navigationController pushViewController:viewSpesa animated:YES];
}

第 3 步:

-(void) previousView:(id)sender
{
    [self.navigationController popViewControllerAnimated:YES];
}

InitWithSpesa:

-(void)initWithSpesa:(Spesa *)spesa
{   
    //Info
    [GeneralManager showInvioTable];

    self.spesaFromGestione = spesa;

    //Setto il resto come non modificabile se la spesa non lo è
    bool isModificable = true;

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd/MM/yyyy"];
    NSString *stringDate = [formatter stringFromDate:spesa.creationDate];

    //Get delle NoteSpesa in tutte le date
    SDLDatabase *db = [[SDLDatabase alloc] initWithFile:dbPath];
    NSString *sql = [NSString stringWithFormat:@"SELECT * FROM invio WHERE data='%@'", stringDate];
    NSMutableArray *resultSpese = [db selectAllFrom:sql];
    [db close];

    if ([resultSpese count] > 0) {
        isModificable = false;   //Data già inviata e non può essere modificata
    }

    //Inserisco i valori nei relativi campi
    [btnCalendario setTitle:stringDate forState:UIControlStateNormal];
    [btnSpese setTitle:spesa.type.nome forState:UIControlStateNormal];
    [txtQuantita setText:[NSString stringWithFormat:@"%d", spesa.quant]];
    [txtCosto setText:[NSString stringWithFormat:@"%.2f", spesa.costo]];
    if (spesa.type.tipoSpesa == TIP_FIXED) {
        [txtCosto setEnabled:false];
        [self.txtCosto setAlpha:0.3];
    }
    [txtNote setText:spesa.note];

    //Foto
    NSArray *photos = [[GeneralManager sharedManager] loadImageForSpesa:spesa];

    //La salvo nel "porta" foto
    for (UIImage *image in photos) {
        [self.scrollerPhoto addPhoto:image];
    }

    if(isModificable){
        //Modificabile
        [btnSalva setTitle:@"Modifica" forState:UIControlStateNormal];
    }else{
        //Non modificabile
        [btnCalendario setEnabled:false];
        [btnSpese setEnabled:false];
        [txtQuantita setEnabled:false];
        [txtCosto setEnabled:false];
        [txtNote setEditable:false];
        [btnScattaFoto setEnabled:false];
        [btnSalva setHidden:true];
        [btnElimina setHidden:true];
    }
}
4

0 回答 0