私は AddressBook プロジェクトに取り組んでいます。私の要件の 1 つは、アプリケーションを使用して新しい連絡先を手動で追加するときに、「組織フィールド」の値がユーザーによって入力されているかどうかを確認する必要があることです。
ナビゲーション バーに Add(+) ボタンがあり、次のコード スニペットがあります。
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];
}
連絡先がアドレス帳に保存される前に、ユーザーが「組織フィールド」を追加したかどうかを確認したい。空白/nilの場合、組織値の入力を求めるアラートボックスを表示したいと思います。これは必須です。ユーザーが組織の値を指定すると、連絡先がアドレスブックに保存されます。
編集: 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 が非表示になっているため、詳細ビュー (ネイティブ アプリの情報画面) には連絡先に関する情報が表示されません。
また、キャンセル ボタンは通常の方法では機能しません。提供してキャンセルを押しても、フィールド値の提供を繰り返し求められるため、アプリに戻ることはできません。
誰でも私を導くことができます!
ありがとうございます。それでは、お元気で