1

我正在使用 ABPersonViewController 并在“信息”视图上添加标签。问题是:当我单击“编辑”按钮时,因为:personController.allowsEditing = YES; 我的视图进入“编辑视图”并且我的标签仍然存在(不是我计划的那样)我试图弄清楚当用户按下“编辑”按钮时我是否可以“通知”,所以我可以删除我的标签在进入“编辑视图”之前从当前视图

我正在考虑的唯一选择是禁用 ABPersonViewController 中的编辑并创建我自己的“编辑”按钮,然后我将不得不尝试实现地址簿“编辑”按钮的相同行为......

按下“编辑”按钮时是否有回调选项?并且仍然保持 ABPersonViewController 的相同行为?

或者也许有一种方法可以知道我在 ABPersonViewController 中的哪个视图(标签或某些东西......?),所以当我不在“信息”视图上时我可以删除标签

谢谢

伊泰

4

2 回答 2

5

或者,您可以子类化并覆盖setEditing:animated. 这个 setter 会被调用EditDone但不会被调用,Cancel并且仍然需要回调。下面的示例在编辑记录时隐藏工具栏并在完成后将其恢复。

// 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并将您自己的自定义操作附加到编辑按钮:在您的视图控制器的初始化中:

-(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视图控制器的“”属性,以便“ self.editing”给出正确的值。

于 2010-06-14T23:44:47.360 回答