在我的程序中,我在视图中创建了一个项目列表。当我单击特定项目时,我会打开另一个视图以查看与该项目相关的信息。
但是当我回到上一个视图时,导航控制器并没有从堆栈中删除视图,事实上,在我返回到上一个视图控制器之后,如果我点击另一个或相同的项目来显示信息,导航控制器视图是相同的数字加 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];
}
}