0

に新しい挿入行を追加する方法を知りたいですPFQueryTableView。すべての PFObjects を適切にロードするテーブル ビューはうまく機能しています。ただし、テーブルビューの下部に新しい行を追加して、それをクリックすると別のView Controllerがポップアップして新しいPFObject. PFObject の削除のみが許可されているように付属していますPFQueryTableViewControllerEdit Buttonあなたは私を助けることができます?

-viewDidLoad

self.navigationItem.rightBarButtonItem = self.editButtonItem;

-tableView :numberOfRowsInSection:

return self.tableView.isEditing ? self.objects.count + 1 : self.objects.count;

-tableView :cellForRowAtIndexPath:object:

BOOL isInsertCell = (indexPath.row == self.objects.count && tableView.isEditing);
NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
    cell = [topLevelObjects objectAtIndex:0];
}
// Configure the cell
UILabel *cellLocationLabel = (UILabel *)[cell.contentView viewWithTag:100];
cellLocationLabel.text = isInsertCell ? @"Add a new location" : [object objectForKey:@"address"];
return cell;
4

1 に答える 1

0

あなたが説明した方法でそれを行う際の問題はPFObject、メソッドに渡す対応がないことtableView:cellForRowAtIndexPath:object:です。これにより、問題が発生する可能性があります。さらに、ユーザーは追加ボタンにアクセスするために一番下までスクロールする必要があります。

これを行うためのより良い方法 (および、私のアプリケーションがまさにこれを行うため、私が行う方法) は、単純に別のボタンをナビゲーション バーに追加することです。

viewDidLoadまたはカスタムinitメソッドで:

// Make a new "+" button
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonPressed)];
NSArray *barButtons = [NSArray arrayWithObjects:self.editButtonItem,addButton,nil];
self.navigationItem.rightBarButtonItems = barButtons;

次に、addButtonPressedメソッドで:

// The user pressed the add button
MyCustomController *controller = [[MyCustomController alloc] init];
[self.navigationController pushViewController:controller animated:YES];
// Replace this with your view controller that handles PFObject creation

編集モードでのみユーザーが新しいオブジェクトを作成できるようにする場合は、ロジックをsetEditing:animated:メソッドに移動します。

- (void) setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];
    if(editing)
    {
        UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonPressed)];
        // self.editButtonItem turns into a "Done" button automatically, so keep it there
        NSArray *barButtons = [NSArray arrayWithObjects:self.editButtonItem,addButton,nil];
        self.navigationItem.rightBarButtonItems = barButtons;
    }
    else
        self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

それが役立つことを願っています! これは私が行う方法です (一種の方法です)。私の意見では、tableView の下部にあるセル内にボタンを配置するよりも少しきれいです。

于 2013-10-26T21:42:18.290 に答える