- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个子类 ABNewPersonViewController
的类。据我了解,当单击导航栏中的完成按钮时,委托(delegate)方法
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person
被调用。但在进入委托(delegate)方法之前,更改将保存到通讯录中。
我需要的是,一旦按下保存按钮。我需要加载一个带有 2 个按钮的 UIView
来询问用户,
但这应该在地址簿中反射(reflect)更改之前完成。只有点击 UIView
中的第一个按钮,更改才会保存在地址簿中。
单击第二个按钮时, View 应该消失,我应该返回到加载 UIView
的 View Controller 类。
我的问题是,在更改反射(reflect)在地址簿中之前,如何在单击保存按钮时加载 View
我创建了一个自定义保存按钮
UIBarButtonItem *okBtn = self.navigationItem.rightBarButtonItem;
UIBarButtonItem *saveBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:okBtn.target action:okBtn.action];
self.navigationItem.rightBarButtonItem =saveBtn;
[saveBtn release];
在保存按钮操作上,控件转到委托(delegate)方法
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person` .
我希望控件转到我的自定义方法,我可以在编辑保存到地址簿之前加载我的 UIView
。
编辑:当我加载 ABNewPersonViewController
ABPersonViewController *displayVcardViewController = (ABPersonViewController*)[self.navigationController visibleViewController];
ABRecordRef person = displayVcardViewController.displayedPerson;
EditAddressNewPersonDetailViewController *newVCardViewController = [[EditAddressNewPersonDetailViewController alloc] init];
newVCardViewController.displayedPerson = person;
newVCardViewController.newPersonViewDelegate = self;
newVCardViewController.isEditingMode = YES;
[self.navigationController setToolbarHidden:YES];
[self.navigationController pushViewController:newVCardViewController animated:YES];
[newVCardViewController release];
这个强引用不是已经存在了吗,否则我应该在哪里包含强引用。
开启
- (void)actionSave:(UIBarButtonItem *)sender {
if([[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]) {
[self.myView setFrame:CGRectMake(0, 0, 320, 480)];
[[UIApplication sharedApplication].keyWindow addSubview:self.myView];
UIActionSheet * action = [[UIActionSheet alloc]initWithTitle:@""
delegate:self
cancelButtonTitle:@"Do"
destructiveButtonTitle:@"Cancel"
otherButtonTitles: nil];
action.tag = 101;
[action showInView:self.view];
[action release];
}
}
我正在加载一个 UIView
,上面有 UIAlertView
。
最佳答案
更新:从 iOS 7.0 开始,ABNewPersonViewController
不再是子类,这将不起作用。
首先,在覆盖它之前保留对默认 rightBarButtonItem
的引用。如果您继承 ABNewPersonViewController
,您的 viewDidLoad
将如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
// Store the old button item into a custom property
// @property (nonatomic, retain) UIBarButtonItem *defaultRightBarButtonItem;
self.defaultRightBarButtonItem = self.navigationItem.rightBarButtonItem;
UIBarButtonItem *saveBtn = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemSave
target:self
action:@selector(actionSave:)];
self.navigationItem.rightBarButtonItem = saveBtn;
[saveBtn release];
}
然后您在自定义操作方法中调用默认目标上的默认操作:
- (void)actionSave:(UIBarButtonItem *)sender {
// Do what you want to do before the data is saved
// ....
// ....
// Trigger the default action
[self.defaultRightBarButtonItem.target
performSelector:self.defaultRightBarButtonItem.action
withObject:self.defaultRightBarButtonItem.target];
}
关于iphone - 如何覆盖 ABNewPersonViewController 中的 "Done"按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9480516/
我已经查看了所有 SO 和其他地方,我想我想做的事情是不可能的。我想知道是否可以使用 ABNewPersonViewController 创建一个人并将其保存在本地(即不在地址簿中,而是作为文件)。或
我正在尝试使用 ABNewPersonViewController 来编辑现有记录。 我设置了 displayedPerson 属性,它显示了所有信息。 如果我点击 Save,一切都会按预期进行。但是
我在 ABNewPersonViewController 中有一个自定义按钮。仅当 ABNewPersonViewController 中的任何(至少)一个字段被编辑时,我才需要启用该按钮。除了编写代
我有一个 ABNewPersonViewController 的子类根据文档的要求,在 Storyboard中定义,并嵌入到导航 Controller 中。导航 Controller 本身由标签栏 C
我正在尝试创建一个与 ABNewPersonViewController 非常相似的布局,它将允许用户在我的应用程序中创建一个新联系人。我的应用程序不使用 AddressBook,也不需要 ABNew
我的 iPad 应用程序仅支持横向。我已经以模态方式呈现了 ABNewPersonViewController (在导航 Controller 中作为苹果文档的建议)并且处于景观中。 现在, 当我尝试
我正在使用 AddressBookUI Framework 添加联系人,当我尝试推送此 View Controller 然后取消并完成按钮无法正常工作时,我不想显示它 这是我的代码 ABNewPers
我对 Objective C 很陌生,我正在使用 XCode 4.2,在应用程序的一部分中,我需要将数据保存在地址簿中。但我需要将其显示在地址簿中,而不仅仅是将其保存在单击按钮上 我正在尝试使用以下代
我正在开发名片阅读器应用程序。当我读取一张卡片时,我从 OCR 输出中得到一个字符串对象。我将字符串与其他字符串分开,例如姓名、地址、电话号码、电子邮件和网址。但我的问题是我无法在 ABNewPers
我在使用 AddressBook 框架 (Core Foundation) 时遇到问题,该框架使 NSMutableDictionary 变量内存崩溃,用于设置电话号码和地址簿中的其他字段,例如如下面
我正在使用 ABNewPersonViewController。我正在将完成按钮(ABNewPersonViewController 的rightBarButtonItem)保存到另一个按钮,以便委托
我有一个子类 ABNewPersonViewController 的类。据我了解,当单击导航栏中的完成按钮时,委托(delegate)方法 - (void)newPersonViewControlle
我继承了一个遗留应用程序,并负责为 iOS 11 更新它。在一个 View 中,用户可以点击一个名字并将该用户添加到他们的联系人中。但是,在 iOS 11 中转到“添加联系人” View 时,导航栏和
编辑:抱歉我的问题。结果发现错误在静态分析器标记的那一行之前。 在这一行中,我调用了一个 Obj-C 方法,它创建并返回一个 ABRecordRef。 ,尽管我通过 CFRelease 平衡了 CF
我是一名优秀的程序员,十分优秀!