- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用苹果的地址簿制作一个简单的联系人应用程序,并且根据他们的开发人员网站中提供的信息,我已经成功创建了联系人应用程序。但我的删除功能有问题。我已经添加了删除代码
[picker setValue:[NSNumber numberWithBool:YES] forKey:@"allowsDeletion"];
并且出现删除按钮,但是当我单击删除时它没有响应,但当我下次重新加载时该联系人确实被删除。我已经搜索过,但找不到合适的解决方案,似乎每个人都有同样的问题。
现在我计划在 PeoplePickerNavigationController 上添加滑动删除功能。我找到了有关如何在 PeoplePickerNavigationController 上标记联系人的代码,并且它有效。现在我正在尝试调整代码以添加滑动删除功能,但我在实现它时遇到了麻烦。你能帮我修改滑动删除的代码吗?这是当我单击联系人时会打上复选标记的代码。我需要替换此事件以滑动删除。
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{
UIView *view = peoplePicker.topViewController.view;
UITableView *tableView = nil;
for(UIView *uv in view.subviews)
{
if([uv isKindOfClass:[UITableView class]])
{
tableView = (UITableView*)uv;
break;
}
}
if(tableView != nil)
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:[tableView indexPathForSelectedRow]];
if(cell.accessoryType == UITableViewCellAccessoryNone){
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else{
cell.accessoryType = UITableViewCellAccessoryNone;
}
[cell setSelected:NO animated:YES];
}
return NO;
}
这是我创建的函数,当我单击删除按钮时应该调用该函数,但您可以添加自己的删除函数,只要它有效即可。
-(void)deleteContct
{
ABAddressBookRef addressBook= ABAddressBookCreate();
ABAddressBookRemoveRecord(addressBook, (ABRecordRef)person,NULL);
ABAddressBookSave(addressBook, NULL);
}
最佳答案
我无法在删除时添加滑动操作,但暂时我设法在警报 View 中添加单击删除。如果您可以在此代码中实现删除时滑动的代码,请发布您的答案,我会将其标记为最佳答案,但目前这是我得到的最佳答案。
-(BOOL)peoplePickerNavigationController:
(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
person12=person;
if(deleteFlag)
{
UIView *view = peoplePicker.topViewController.view;
UITableView *tableView = nil;
for(UIView *uv in view.subviews)
{
if([uv isKindOfClass:[UITableView class]])
{
tableView = (UITableView*)uv;
break;
}
}
//[tableView setEditing:YES]; // I was trying to write code for this delete function, for swipe delete
if(tableView != nil)
{
[self tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:[tableView indexPathForSelectedRow]];
}
return NO;
}
else
{
[peoplePicker dismissModalViewControllerAnimated:NO];
ABPersonViewController *picker = [[ABPersonViewController alloc] init];
picker.personViewDelegate = self;
picker.displayedPerson = person;
// Allow users to edit the person’s information
picker.allowsEditing = YES;
[self.navigationController pushViewController:picker animated:YES];
return YES;
}
}
//Deletes contact here
-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
//NSLog(@"%@",[alertView buttonTitleAtIndex:buttonIndex]);
if([alertView buttonTitleAtIndex:buttonIndex]==@"Delete") // This is where my click on delete works
{
ABAddressBookRef addressBook= ABAddressBookCreate();
ABAddressBookRemoveRecord(addressBook, (ABRecordRef)person12,NULL);
ABAddressBookSave(addressBook, NULL);
CFRelease(addressBook);
}
else if([alertView buttonTitleAtIndex:buttonIndex]==@"Delete All") // This is for a different menu option for deleting all contact at once
{
ABAddressBookRef addressBook= ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
for (CFIndex i = 0; i < CFArrayGetCount(people); i++)
{
self.person12 = CFArrayGetValueAtIndex(people, i);
ABAddressBookRemoveRecord(addressBook, self.person12,NULL);
}
CFBridgingRelease(people);
ABAddressBookSave(addressBook,NULL);
[self showContacts];
CFRelease(addressBook);
}
}
//用于显示删除的警报 View 选项
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *str=[[NSString stringWithFormat:@"%@", (__bridge_transfer NSString *)ABRecordCopyValue(self.person12, kABPersonFirstNameProperty)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSString *delMsg = [NSString stringWithFormat:@"Delete Contact %@",str];
if(editingStyle==UITableViewCellEditingStyleDelete)
{
UIAlertView *message= [[UIAlertView alloc] initWithTitle:delMsg message:@"This action can't be undone, are you sure?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Delete", nil];
[message show];
}
}
关于ios - 在 ABPeoplePickerNavigationController 中添加滑动删除功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051282/
我想调出用户的地址簿,并使用新的 PeoplePicker Controller 对结果进行切片,以仅显示与特定术语匹配的结果。我看到 UIPeoplePickerNavigationControll
我的联系人列表在模拟器中完美显示。它获取电话号码并将其放入文本框中。所以我决定在我的 iPhone 上尝试一下,它实际上执行了我点击的东西。它会调用该号码,而不是将号码放入文本框中。代码如下: - (
有什么方法可以自定义 ABPeoplePickerNavController 数据源吗?我的意思是,我不需要从手机的地址簿中获取成员,而是需要它从数组中获取数据,例如在我的应用程序中。我将从服务器获取
您好,我有一个 ABPeoplePickerNavigationController,在创建时设置其导航栏隐藏。 peoplePickerController.navigationBar.hidden
联系人应用程序中有一个“添加即时消息”按钮。有一些预定义的,如 Skype、MSN、Facebook 等,但您可以添加自定义的。 但是,如果您添加自定义即时消息地址,并使用 ABPeoplePicke
我有一个核心数据堆栈,其中包含一个名为“客户端”的实体。每个客户端都有一个“addressBookID”属性,它指的是地址簿中个人记录的唯一ID。我目前正在使用 fetchedResultsContr
我想使用 ABPeoplePickerNavigationController 但我想自定义 View 。我想要一些联系人的附件图像,并且我想以不同于默认方式的方式对它们进行排序。有办法吗?还是我必须
在使用 ABPeoplePickerNavigationController 时,didSelecPerson 委托(delegate)将在用户选择一个人时被调用,然后 ABPeoplePickerN
Apple 提供了一个名为 PeoplePicker 的示例项目,它启动了一个仅包含具有电子邮件地址的联系人的 ABPeoplePickerNavigationController: ABPeople
我正在检查我的应用程序以消除所有内存泄漏,分析工具使用 abpeoplepickernavigationcontroller 发现了一个泄漏。 我知道这与复制方法有关?但不知道如何在编写时的位置和时间
我只在模拟器中遇到此崩溃。在真实设备上它可以正常工作和调试。(因此它不是太重要,但我正在做一个演示文稿,模拟器很方便。) - (BOOL)peoplePickerNavigationControlle
当使用 ABPeoplePickerNavigationController 时,加载和显示控件需要一些时间(~0.5 秒),这比其他弹出窗口的正常 react 时间要慢。 我的解决方案是将 Cont
我正在使用此代码在应用中显示联系人。 - (IBAction) selectContact:(id)sender { ABPeoplePickerNavigationController *p
几周来我一直在寻找解决方案,这让我几近绝望。 问题很简单: 通过 ABPeoplePickerNavigationController(作为 ModalView),应该选择一个人。 然后仅(例如)显示
我正在对 ABPeoplePickerNavigationController 进行子类化,我想知道如何隐藏正确的工具栏项“Cancel”? 我一直在寻找,但找不到合适的解决方案。 谢谢! 最佳答案
我正在使用 ABPeoplePickerNavigationController 由用户选择地址簿联系人。使用此代码隐藏按钮操作: ABPeoplePickerNavigationController
我想提示用户从地址簿中选择 1 个或多个人,但 ABPeoplePickerNavigationController 不允许这样做(这很讽刺,因为这是人 选择器,而不是人选择器)。 在我创建自己的 C
我在我的应用程序中将 ABPeoplePickerNavigationController 显示为选项卡。用户点击姓名,然后点击电子邮件地址,然后我对电子邮件地址执行一些操作。 之后,我希望他们选择的
我正在使用 ABPeoplePicker 显示联系人列表。 我想过滤此联系人列表,仅显示具有电子邮件地址的联系人。我该怎么做? 最佳答案 我需要它,所以我开始做类似的事情。查看https://gith
我最近将我的 iPhone 和 Xcode 从 iOS 6 升级到 iOS 8,并且遇到了从 ABPeoplePickerNavigationController 选择电话号码或电子邮件地址时执行“默
我是一名优秀的程序员,十分优秀!