0

テーブルビューがあるナビゲーションコントローラーがあります。そのナビゲーションバーに「お気に入りに追加」と「編集」の2つのボタンが必要でした。

どちらのボタンも、テーブル ビューを編集モードにするイベントを発生させる必要があります。「お気に入りに追加」ボタンから、テーブル ビューを挿入モードにします。つまり、すべてのセルの前に + 緑色の記号を表示し、[編集] ボタンを使用して削除モードにします。つまり、すべてのセルの前にマイナス記号を表示します。

編集ボタンは整理したのですが、お気に入りに追加ボタンができません。参照用にここに私のコードを貼り付けます

viewDidLoad メソッド:

- (void)viewDidLoad
{

      self.navigationItem.rightBarButtonItem = self.editButtonItem;

    self.navigationItem.leftBarButtonItem=[[[UIBarButtonItem alloc]initWithTitle:@"Add to Favourite" style:UIBarButtonItemStylePlain target:self action:@selector(saveAction:)]autorelease];




    [super viewDidLoad];




- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.tableView setEditing:editing animated:YES];

    //Do not let the user add if the app is in edit mode.
    if(editing)
        self.navigationItem.leftBarButtonItem.enabled = NO;
    else
        self.navigationItem.leftBarButtonItem.enabled = YES;


    NSLog(@"i came till here");   }

この方法では、データベースから値を取得し、DB とテーブル ビューから値を削除するだけです。

- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath {

    if(editingStyle == UITableViewCellEditingStyleDelete) {

        NSDictionary *rowVals = (NSDictionary *) [appdelegate.tablearr objectAtIndex:indexPath.row];
        NSString *keyValue = (NSString *) [rowVals objectForKey:@"id"];

      //  [tableView beginUpdates];

        sqlite3 *db;
        int dbrc; //Codice di ritorno del database (database return code)
        AppDelegate *appDelegate = (AppDelegate*) [UIApplication sharedApplication].delegate;
        const char *dbFilePathUTF8 = [appDelegate.dbFilePath UTF8String];
        dbrc = sqlite3_open(dbFilePathUTF8, &db);
        if (dbrc) {
            NSLog(@"Impossibile aprire il Database!");
            return;
        }

        sqlite3_stmt *dbps; //Istruzione di preparazione del database

        NSString *deleteStatementsNS = [NSString stringWithFormat: @"DELETE FROM \"Hell\" WHERE id='%@'", keyValue];
        const char *deleteStatement = [deleteStatementsNS UTF8String];
        dbrc = sqlite3_prepare_v2(db, deleteStatement, -1, &dbps, NULL);
        dbrc = sqlite3_step(dbps);
        sqlite3_finalize(dbps);
        sqlite3_close(db);


        [appdelegate.tablearr removeObjectAtIndex:indexPath.row];



        //Delete the object from the table.
        [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

そして、これは、お気に入りに追加ボタンを押したときに起動される1つのメソッドです

-(void)saveAction:(UIBarButtonItem *)sender{

    NSLog(@"here");



 }

テーブルビューが編集に入り、すべてのセルの前に + 緑の挿入物があるようにするには、このメソッドに何を書く必要がありますか??

4

1 に答える 1

1

テーブルを編集モードにするには、次を使用する必要があります。

[self.tableView setEditing:YES animated:YES];

挿入モードと削除モードを切り替えるには、 を実装する必要がありますtableView:editingStyleForRowAtIndexPath:。すなわち:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (some condition)
        return UITableViewCellEditingStyleInsert;
    else
        return UITableViewCellEditingStyleDelete;
}
于 2012-07-29T18:26:42.347 に答える