在联系人保存联系人之前如何查看是否添加组织名称?
我正在研究AddressBook项目,我的要求之一是在使用我的应用程序手动添加新联系人时,应检查“组织字段”值是否由用户input。
我在导航栏上用下面的代码片段添加(+)button:
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(add:)]; self.navigationItem.rightBarButtonItem = addButton;
当前的模式视图出现在单击此添加button时,通过本机地址簿;
-(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。
编辑:正如下面的法比奥build议,我更新了我的代码..
- (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]; } }
有了这个我能够向用户显示一个警报提供字段值。 它也正在更新随后创build的logging。 但是,当MODAL VIEW被解雇时,详细视图(本地应用程序的信息屏幕)没有显示关于联系人的信息。
此外,取消button不能正常工作..我不能回到应用程序,因为它反复要求提供字段值,即使我提供,并按取消。
任何人都可以指导我!
感谢和问候
没有logging的方法来使用ABNewPersonViewController执行此操作,因为调用委托方法时,已由ABNewPersonViewController保存该人员。 以前你应该自己制作“插入控制器”并使用它。
但我试过这个解决方法,并获得了这种行为(在iOS 6上):
在委托方法中
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person
你收到一个新的人创build。 然后,您可以访问保存的人员并检查公司是否已编译。 如果没有,只是你不打电话
[self dismissModalViewControllerAnimated:YES];
ABNewPersonViewController将保持原位,并且可以向用户显示警告,要求他编译公司。 这些字段将保持编译,并且ABNewPersonViewController“链接”到创build的新用户。
然后,用户可以:
- 编译公司字段 – >点击保存将更新保存的人,并给你的委托新的数据,所以你可以closuresviewcontroller正确
- 点击取消 – >您将收到取消,并且该人将被ABNewPersonViewController本身删除
但是…因为我找不到任何地方logging的这种行为,我不确定是否
- 它将在其他版本上工作
- 它将“生存”到审查过程(以前您没有使用私有API,但不确定当用户点击保存时“不closures”视图控制器对于UI准则是不利的)
问候法比奥