13

UINavigationController ベースのアプリがあります。ビュー コントローラーの viewDidLoad メソッド内から UINavigationBar のタイトルをプログラムで設定できます。

self.navigationItem.title = m_name;

ナビゲーション バーのタイトルを編集できるようにすることはできますか? すなわち。ユーザーがナビゲーション バーのタイトルをタップして編集できるようにしたい。

これは可能ですか?可能であれば、Apple のヒューマン インターフェイス ガイドラインを満たしている可能性はありますか? (この投稿はそれを示唆していますが、実装方法については教えていません - Make UINavigationBar title editable )

どうもありがとう

ネイサン

4

7 に答える 7

20

タイトルのカスタム ビューを設定できます。

タイトルビュー

レシーバーがトップ アイテムの場合、ナビゲーション バーの中央に表示されるカスタム ビュー。

@property(非アトミック、保持) UIView *titleView

討論

このプロパティ値が nil の場合、レシーバーがトップ アイテムの場合、ナビゲーション アイテムのタイトルはナビゲーション バーの中央に表示されます。このプロパティをカスタム タイトルに設定すると、タイトルの代わりに表示されます。leftBarButtonItem が nil でない場合、このプロパティは無視されます。

カスタム ビューにはボタンを含めることができます。UIButton クラスの buttonWithType: メソッドを使用して、ナビゲーション バーのスタイルでカスタム ビューにボタンを追加します。カスタム タイトル ビューはナビゲーション バーの中央に配置され、収まるようにサイズを変更できます。

titleView に UITextField を配置する場合は、clearColor 背景を指定し、境界線を持たないように設定できます。タップして編集できる UINavigationBar タイトルがあります。

于 2012-05-20T13:54:47.450 に答える
13

ライアンの解決策はまさに正しいです。実装に問題がある場合は、次のサンプル コードを参照してください。それを、navigationController を持つ任意のクラスの ViewDidLoad に貼り付けるだけです。

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 22)];
textField.text = @"Insert Title Here";
textField.font = [UIFont boldSystemFontOfSize:19];
textField.textColor = [UIColor whiteColor];
textField.textAlignment = NSTextAlignmentCenter;
self.navigationItem.titleView = textField;

プロジェクトで ARC を使用していない場合は、次のように textField を解放してください。

UITextField *textField = [[[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 22)]autorelease];

またはそのように:

[textField release];

それが役立つことを願っています。

于 2012-12-24T19:29:13.223 に答える
2

迅速なライアンのソリューション

let textField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 22))
textField.text = "Title"
textField.font = UIFont.systemFontOfSize(19)
textField.textColor = UIColor.whiteColor()
textField.textAlignment = .Center
self.navigationItem.titleView = textField
于 2015-05-21T11:18:03.170 に答える
0

ナビゲーション バーのすぐ上にテキスト フィールドを配置し、非表示/非表示に設定できます。ジェスチャ レコグナイザーを使用してナビゲーション バーのタップを検出し、テキスト フィールドを有効/非表示に設定します。次に、テキストフィールドの終了編集メソッドで、再度非表示に設定し、ナビゲーションバーのタイトルをテキストフィールドのタイトルに設定します。

于 2012-05-20T13:53:12.940 に答える
0

ナビゲーション バーの上に非表示のテキスト フィールドを追加します。タップするとキーボードがポップアップし、ユーザーはそこにテキストを入力できます。

戻るボタン イベントを取得すると、ナビゲーション バーのテキストを新しく追加されたテキストで変更できます。そして、テキストフィールドを再び非表示にします。

コーディングをお楽しみください :)

于 2012-05-20T13:53:36.247 に答える
0

NavigationBar に textField を配置し、textField の背景色を不透明度 0 に設定します。

于 2012-05-20T14:03:48.600 に答える