ABPersonViewController - 来自“编辑”按钮的回调 - 目标C.

时间:2010-01-03 22:43:21

标签: objective-c iphone addressbook abaddressbook

我正在使用ABPersonViewController并在“Info”视图上添加标签。 事情是: 当我点击“编辑”按钮时,因为:personController.allowsEditing = YES; 我的视图转到“编辑视图”,我的标签仍在那里(不是我计划的) 我试图弄清楚当用户按下“编辑”按钮时我是否可以“通知”,这样我就可以在进入“Edity View”之前从当前视图中删除我的标签

我正在考虑的唯一选择是禁用ABPersonViewController中的编辑并创建我自己的“编辑”按钮,然后我将尝试实现Addressbook“编辑”按钮的相同行为... < / p>

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

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

由于

Itay

2 个答案:

答案 0 :(得分:5)

或者,您可以继承并覆盖setEditing:animated。我会为EditDone调用此setter,但不会为Cancel调用此setter,仍然需要回调。下面的示例在编辑记录时隐藏工具栏,并在完成后恢复它。

// 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];
}

答案 1 :(得分: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”提供正确的值。