2013-08-30 100 views
0

我有一個自定義的UIActivity,我用它來創建一個聯繫人到設備的AddressBook。在這種UIActivity,我創建一個ABNewPersonViewController,把它放在一個UINavigationController內部和UIActivity的在iPad上UIActivity自定義activityViewController崩潰

- (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]; 
} 

在調用此UIActivity

- (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]; 
    } 
} 

任何幫助將不勝感激的視圖控制器

鏈接到演示項目: http://ge.tt/23MeOYq/v/0?c

回答

0

我有一個類似的問題,只是發生在旋轉崩潰的活動視圖控制器被駁回後。在我的情況下,我將故事板設置中的自定義視圖控制器設置爲「全屏」,並將其更改爲「表單」顯示,崩潰消失。我不知道爲什麼這有所作爲。

關於自定義視圖控制器關閉後您的自動轉換不工作,請嘗試向您的活動視圖控制器添加完成處理程序,以使您的彈出視圖控制器ivar無效。我注意到,如果我沒有這樣做,自定義活動和自定義視圖控制器不會得到dealloc'd,並且自動旋轉不會發生。例如: -

avc.completionHandler = ^(NSString* activityType, BOOL completed){ 
    if (UIUserInterfaceIdiomPad == [UIDevice currentDevice].userInterfaceIdiom) 
     self.popover = nil; 
}; 

此外,檢查出的帖子在:"activityviewcontroller not dismissing",我發現有幫助。

相關問題