3

編集できるようにテーブル ビューを設定するのは簡単です。UITableViewController に 1 行追加するだけです。

self.navigationItem.rightBarButtonItem = self.editButtonItem;

この行は、テーブルを編集モードに変更し、編集中にボタンのテキストを「完了」に変更する編集ボタンをナビゲーション バーに追加します。

これをInterface Builderで設定することは可能ですか? UIBarButtonItem を追加して、その「識別子」を「編集」に設定できることがわかりましたが、期待される動作が見られません。

ところで、属性パネルの「識別子」は何をしますか?

4

3 に答える 3

1

はい、Interface BuilderでUIBarButtonItemsを追加でき、それらは機能するはずです。

識別子を使用すると、プリセットボタン([編集]や[再読み込み]など)を使用できます。または、[カスタム]を選択して独自のボタンを作成することもできます。

編集: IBを介して追加されたUIBarButtonItemsがどのように機能しないかを説明できれば、さらに支援できる可能性があります。

更新: UIViewController.editButtonItemは、ビューのsetEditingメソッドを呼び出すUIBarButtonItemを返す特別なメソッドです。同じことを行うメソッドを作成し、セレクターをIBのUIBarButtonItemに接続することで、同じ効果を得ることができます。

ヘッダーファイル:

- IBAction edit:(id)sender;

および実装ファイル内:

- (IBAction) edit:(id)sender {
    [self setEditing:YES animated:YES];
}

次に、セレクターをUIBarButtonItemに接続します。

ただし、テーブルビューは別のファイルにあるため、デフォルトのナビゲーションベースのアプリケーションテンプレートでこの接続を作成できない場合があります。

于 2009-02-07T19:42:51.983 に答える
0

こちらをご覧ください: http://blog.tmro.net/2009/05/uitabbarbuttonitem-did-not-change-its.html

ボタンのラベルを動的に変更できるようにする場合は、必ずカスタム識別子を使用してください。そうしないと、そのタイトルが不変になります。

于 2009-05-18T06:43:53.503 に答える
0

Xcode 9.4.1 の時点では、特に Interface Builder でこれを行うことはまだできないようです。ただし、コードで行うのは非常に簡単です。

IB でボタンを設定する必要はまったくありません。viewDidLoadメソッドに次のコードを追加するだけです。

navigationItem.leftBarButtonItem = editButtonItem

これにより、[編集] ボタンが自動的に設定され、ユーザーが編集を終了できるように [完了] に変わります。

編集プロセスに関連するカスタムを行うには、View Controller のsetEditing(_ editing: Bool, animated: Bool)メソッドをオーバーライドします。

たとえば、編集のオンとオフを切り替える必要があるテーブル ビューがある場合は、次のようにします。

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)
    tableView.setEditing(editing, animated: animated)
}

必ずここに電話super.setEditingしてください。

注: を使用している場合UITableViewControllersetEditing、テーブル ビューを処理するためにスーパー クラスに既に設定されています。編集を有効/無効にするときに含めたい他のカスタム コードがない限り、オーバーライドする必要はありません。

于 2018-07-30T17:56:17.770 に答える