1

ABPersonViewControllerを使用していて、「情報」ビューにラベルを追加しています。重要なのは、「編集」ボタンをクリックすると、:personController.allowsEditing=YES;になるためです。ビューが「編集ビュー」に移動し、ラベルがまだそこにあります(計画どおりではありません)ユーザーが[編集]ボタンを押したときに「通知」できるかどうかを確認しようとしているので、ラベルを削除できます「EdityView」に移動する前に現在のビューから

私が考えている唯一のオプションは、ABPersonViewControllerでの編集を無効にし、独自の[編集]ボタンを作成することです。その後、アドレス帳の[編集]ボタンと同じ動作を試して実装する必要があります...

「編集」ボタンが押されたときのコールバックのオプションはありますか?それでもABPersonViewControllerの同じ動作を維持しますか?

または、ABPersonViewControllerで自分がどのビューにいるのか(タグまたは何か...?)を知る方法があるので、「情報」ビューにいないときにラベルを削除できます。

ありがとう

Itay

4

2 に答える 2

5

または、サブクラス化してオーバーライドすることもできますsetEditing:animated。このセッターは両方に対して呼び出されますが、に対しては呼び出されEditDoneCancelコールバックが引き続き必要です。次の例では、レコードを編集するときにツールバーを非表示にし、完了したら復元します。

// Override setter to show/hide toolbar
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    self.navigationController.toolbarHidden = editing;
    if (editing) {
        [self.navigationItem.leftBarButtonItem setTarget:self];
        [self.navigationItem.leftBarButtonItem setAction:@selector(cancel)];
    }
}

// Cancel button callback (does not invoke setEditing:animated)
- (void)cancel {
    [self setEditing:NO animated:YES];
}
于 2012-04-28T21:53:18.407 に答える
2

編集が押されたときに通知を受け取る、ちょっとハックな方法を見つけました。

のサブクラスを作成し、ABPersonViewController独自のカスタム アクションを編集ボタンにアタッチします。View Controller の初期化では、次のようにします。

-(void)viewDidAppear:(BOOL)animated{

    [self.navigationItem.rightBarButtonItem setTarget:self];
    [self.navigationItem.rightBarButtonItem setAction:@selector(editPressed)];

}

編集ボタンへのより良い参照が見つかりませんでした:self.navigationItem.rightBarButtonItem

editPressed次に、アクションを作成します。

-(void)editPressed{

    [super setEditing:!super.editing];

    if(self.editing){

       NSLog(@"Editing");

       //Insert code to put your custom view in edit mode

    }else{

       NSLog(@"Not editing");

      //Insert code to take your custom view out of edit mode

    }
}

必要に応じて編集モードに出入り[super setEditing:!super.editing]するため、最初に呼び出すことが重要です (カスタム アクションを定義すると、デフォルト アクションが上書きされます)。UIPersonViewControllerまたediting、View Controller の ' ' プロパティを適切に更新して、' 'self.editingが正しい値を与えるようにします。

于 2010-06-14T23:44:47.360 に答える