我正在开发一个AddressBook项目,我的要求之一是在使用我的应用程序手动添加新联系人时,它应该检查用户是否输入了“组织字段”值。
我在导航栏上添加了(+)按钮,其中包含以下代码片段:
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self
action:@selector(add:)];
self.navigationItem.rightBarButtonItem = addButton;
按本地地址簿单击此添加按钮时会出现当前模态视图;
-(void)add:(id)sender
{
ABNewPersonViewController *view = [[ABNewPersonViewController alloc] init];
view.newPersonViewDelegate = self;
UINavigationController *newNavigationController = [[UINavigationController alloc] initWithRootViewController:view];
[self presentModalViewController:newNavigationController animated:YES];
}
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person
{
newPersonView.displayedPerson = person;
[self dismissModalViewControllerAnimated:YES];
[table reloadData];
}
在联系人保存到我的地址簿之前我想检查用户是否添加了“组织字段”。如果是空白/无,我想显示一个警告框,要求填写组织价值。这是强制性的,一旦用户提供了组织值,联系人就会保存到AddressBook。
编辑:正如下面Fabio的建议,我更新了我的代码..
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person{
NSString *company = [NSString stringWithFormat: @"%@", ABRecordCopyValue(person, kABPersonOrganizationProperty)];
if ([company isEqualToString: @"(null)"]) {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Value Required!" message:@"Please provide some value for ORGANIZATION Field..." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
}
else
{
newPersonView.displayedPerson = person;
[self dismissModalViewControllerAnimated:YES];
}
}
通过这个我能够向用户显示警报以提供字段值。它还会更新后续创建的记录。但是,由于MODAL VIEW被解雇,详细视图(Native App的信息屏幕)显示没有关于联系人的信息。
此外,CANCEL按钮不能正常工作..我无法返回应用程序,因为它反复要求提供字段值,即使我提供并按取消。
任何人都可以指导我!
谢谢&此致
答案 0 :(得分:1)
使用ABNewPersonViewController没有记录的方法,因为当调用委托方法时,ABNewPersonViewController已经保存了该人。 以前你应该自己制作“插入控制器”并使用它。
但是我尝试了这种解决方法并获得了这种行为(在iOS 6上):
在委托方法
中- (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person
您收到了对创建的新人的引用。 然后,您可以访问已保存的人员并检查公司是否已编译。如果没有,只是你不打电话
[self dismissModalViewControllerAnimated:YES];
ABNewPersonViewController将保持原位,您可以向用户显示警告,要求他编译公司。 这些字段将保持编译状态,ABNewPersonViewController“链接”到创建的新用户。
然后,用户可以:
但是......因为我无法在任何地方找到这种行为,我不确定是否
此致 法比奥