7

私は、UITextView、UIToolBar と UIBarButtonItem の 3 つの要素を構成する iPhone のビューに取り組んでいます。

目標は、UIBarButtonItem のスタイルを「編集」(UIBarButtonSystemItemEdit) から「完了」(UIBarButtonSystemItemDone) に変更し、新しいセレクターを新しいメソッドに更新することです。

まず、次のコードを試しましたが、うまくいきません。

この考えを手伝ってくれませんか?

4

4 に答える 4

15

この動作を持つ組み込みのバー ボタンがeditButtonItemあり、UIViewContoller のプロパティを介して取得します。そのボタンをタブで押すと、元のビュー コントローラーが編集モードに変わり、ボタンが完了ボタンに切り替わります。

- (void)viewDidLoad {
  [super viewDidLoad];
  self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
于 2009-10-30T07:28:35.830 に答える
5

IB を介してボタンを追加した場合は、識別子をカスタムに設定してください。また、適切な IBOutlet とプロパティを使用して .h にボタンを割り当てます。.m でボタンを合成します。

次に、コードで次の操作を行います。

// Set to done
editButton.style = UIBarButtonItemStyleDone;
editButton.title = @"Done";

// Set back to edit
editButton.style = UIBarButtonItemStyleBordered;
editButton.title = @"Edit";
于 2011-02-10T03:26:31.980 に答える
4

ボタンを変更するには、これを使用して [完了] ボタン

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];

ボタンを編集ボタンに変更するには、これを使用します

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered];
于 2010-09-03T12:05:22.773 に答える
2

私は最終的にこのようなことをしました。残念ながら、タイトルを直接設定しても機能しませんでした。何らかの理由でタイトルが nil であり、別の値に設定できませんでした。self.editButton は、ターゲットとアクションが設定された IBOutlet から取得されます。このコードは ARC を使用しています。これが誰かに役立つことを願っています。

        NSString *title = app.settings.editing 
                        ? NSLocalizedString(@"Done", @"")
                        : NSLocalizedString(@"Edit", @"");

        UIBarButtonItemStyle style  = app.settings.editing 
                                    ? UIBarButtonItemStyleDone
                                    : UIBarButtonItemStyleBordered;

        UIBarButtonItem *editButton 
            = [[UIBarButtonItem alloc] initWithTitle:title 
                                               style:style 
                                              target:self.editButton.target 
                                              action:self.editButton.action];

        self.navigationItem.rightBarButtonItem = editButton;
于 2012-04-06T03:08:15.037 に答える