Objective c UIActivity自定义activityViewController在iPad上崩溃
我有一个自定义UIActivity,用于创建设备通讯簿的联系人。在这个UIActivity中,我创建了一个ABNewPersonViewController,将其放入UINavigationController中,并将其返回到UIActivity的Objective c UIActivity自定义activityViewController在iPad上崩溃,objective-c,ipad,uinavigationcontroller,uiactivity,Objective C,Ipad,Uinavigationcontroller,Uiactivity,我有一个自定义UIActivity,用于创建设备通讯簿的联系人。在这个UIActivity中,我创建了一个ABNewPersonViewController,将其放入UINavigationController中,并将其返回到UIActivity的 - (UIViewController *)activityViewController 问题是,在iPad上,由于引用了发布的UINavigationController,我遇到了一个崩溃。消息的类型为: *** -[UINavigationCo
- (UIViewController *)activityViewController
问题是,在iPad上,由于引用了发布的UINavigationController,我遇到了一个崩溃。消息的类型为:
*** -[UINavigationController _viewControllerForSupportedInterfaceOrientations]: message sent to deallocated instance 0xa6f1660
另外,在我的控制器关闭后,当界面改变方向时,iPad不会自动旋转视图
我使用的代码如下所示:
在UIActivity中
- (void)prepareWithActivityItems:(NSArray *)activityItems
{
// Prepare the AB View Controller
ABRecordRef aContact = ABPersonCreate();
CFErrorRef error = NULL;
ABRecordSetValue(aContact, kABPersonKindProperty, kABPersonKindOrganization, &error);
ABRecordSetValue(aContact, kABPersonOrganizationProperty, @"Apple Inc.", &error);
ABMultiValueRef phone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(phone, @"+1 2345 784513", kABWorkLabel, NULL);
ABRecordSetValue(aContact, kABPersonPhoneProperty, phone, &error);
CFRelease(phone);
self.newContactVC.title = @"New company";
self.newContactVC.displayedPerson = aContact;
[self.navigation setViewControllers:[NSArray arrayWithObject:self.newContactVC]];
CFRelease(aContact);
}
- (UIViewController *)activityViewController
{
return self.navigation;
}
// Dismisses the new-person view controller.
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person
{
[self activityDidFinish:YES];
}
调用此活动的ViewController中的
- (IBAction)showActionsSheet:(id)sender {
AddToAddressBookActivity *abActivity = [[AddToAddressBookActivity alloc] init];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:nil
applicationActivities:[NSArray arrayWithObject:abActivity]];
activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll];
if (!self.popover || ![self.popover isPopoverVisible]) {
self.popover = [[UIPopoverController alloc] initWithContentViewController:activityVC];
[self.popover setDelegate:self];
self.popover.passthroughViews = nil;
[self.popover presentPopoverFromRect:self.showASBtn.frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
}
任何帮助都将不胜感激
链接到演示项目:
我也遇到了类似的问题,除了在活动视图控制器关闭后,在旋转时发生了崩溃。在我的例子中,我在故事板设置中使用了自定义视图控制器,以“全屏”的形式显示,当将其更改为显示为“表单”时,崩溃消失了。我不知道为什么会有不同 关于自定义视图控制器解除后自动旋转不起作用,请尝试将完成处理程序添加到活动视图控制器,以使popover视图控制器ivar为零。我注意到,如果我不这样做,自定义活动和自定义视图控制器不会被解除锁定,自动旋转也不会发生。e、 g:
avc.completionHandler = ^(NSString* activityType, BOOL completed){
if ( UIUserInterfaceIdiomPad == [UIDevice currentDevice].userInterfaceIdiom )
self.popover = nil;
};
另外,请查看以下帖子:,我觉得这很有帮助