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