Il mio suggerimento sarebbe quello di non implementare la funzionalità Add come un pulsante nella barra di navigazione. Presumo che tu abbia a che fare con una vista tabella degli elementi di seguito, quindi un modo per gestire questa interazione utente è visualizzare un'opzione "Aggiungi nuovo elemento" come ultima voce nella visualizzazione tabella. Questo potrebbe essere a livello di codice sbiadito quando l'utente tocca il pulsante Modifica nella barra di navigazione implementando il seguente metodo delegato:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
[self.tableView beginUpdates];
[self.tableView setEditing:editing animated:YES];
if (editing)
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[objects count] inSection:0];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[objects count] inSection:0];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
[self.tableView endUpdates];
}
È quindi avrebbe bisogno di fare in modo che la riga in più si spiega con l'aumento della conta di righe con la seguente:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView.editing)
return ([objects count] + 1);
else
return [objects count];
}
e poi mostra il segno più verde alla sua sinistra, in contrasto con il normale stile di modifica cancellazione:
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (self.editing == NO || !indexPath) return UITableViewCellEditingStyleNone;
if (indexPath.row >= [objects count])
return UITableViewCellEditingStyleInsert;
else
return UITableViewCellEditingStyleDelete;
return UITableViewCellEditingStyleNone;
}
Ovviamente, dovrai fornire un nome nel tuo cellForRowAtIndexPath: implementazione e gestire anche la sua selezione di righe.
fonte
2009-05-31 21:50:25
fa questo in realtà funziona? Ho provato questo senza luc _viewTypeButton = [[allocazione UIButton] initWithFrame: CGRectMake (0,0,20,20)]; _viewTypeButton.titleLabel.text = @ "R"; [self.navigationController.navigationBar addSubview: _viewTypeButton]; k. – roocell