6

Bazı verileri ayrıntılı bir ViewViewController'da sunan bir uygulama üzerinde çalışıyorum. Kendi UIActivity alt sınıf öğelerimle dolu bir UIActivityViewController sunan navbarda bir rightBarButton var. Bunların çoğu, küçük bir görünümü yalnızca ayrıntı görünümünden veriye dönüştürdüğü için iyi çalışır, ancak seçildikten sonra bir modalViewController açmak için bunlardan birine ihtiyacım var. Ben o uygulama çökmez ama kalıcı görünüm ya görünmüyor fazlalaştı varsayalımUIActivity View Controller'dan alınan UIActivity öğesinden bir ModalViewController'ı nasıl sunabilirim?

Warning: Attempt to present <UINavigationController: 0x1fd00590> 
on <UITabBarController: 0x1fde1070> which is already presenting <MPActivityViewController: 0x1fd2f970> 

..... konsoldan aşağıdaki uyarıyı almaya devam. UIActivityViewController'ın modal bir görünüm olduğu varsayılıyor ve yalnızca bir tanesini görüntüleyebiliyorsunuz, böylece görev ActivityView kaybolduğunda segueimi nasıl gerçekleştireceğimi anlamaya çalışıyorum, ancak bu noktada güldüğüm yer. Herhangi bir yardım, düşünce veya geri bildirimi memnuniyetle karşılıyorum. Google'ı denedim ama çok şansım olmadı, sanırım UIActivityViewController çok yeni.

Kurulumum şu ana kadar, UIActivity nesnelerimde, detailViewController'ın veri değişikliklerini gerçekleştirmesini ve ardından görünümünü güncelleştirmesini sağlayan özel bir protokol için detailViewController öğesine ayarlanmış bir temsilci var. ModalView denetleyicisini sunması gereken söz konusu etkinlikler için

Tümüyle aynı uyarıyı aldığım birkaç yaklaşımı denedim.


Bu İşlerin Hiçbiri !!!


1) sadece

- (void) activityDidRequestTransactionEdit 
{ 
    NSLog(@"activityDidRequestTransactionEdit"); 
    [self performSegueWithIdentifier:@"editTransaction" sender:self]; 
} 

2) UIActivityViewController bir tamamlama blok belirlenmiş ve temsilci yöntemi, modal görünüm olmalıdır Boole bayrağı set sahip güvenilir zaman temsilci yönteminden performans segue güvenilir gösterilir (self.editor)

[activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed) { 
    NSLog(@"completed dialog - activity: %@ - finished flag: %d", activityType, completed); 
    if (completed && self.editor) { 
     [self performSegueWithIdentifier:@"editTransaction" sender:self]; 
    } 
}]; 
), UIActivityViewController kendisi sınıflara bir temsilci olarak o DetailView veren ve geçersiz kılma Bunu

- (UIViewController *) activityViewController { 
    MPEditMyDataViewController *controller = [[MPEditMyDataViewController alloc] init]; 
    controller.activity = self; // more on this property below 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; 
    return navController; 
} 
gibi bu yöntemi geçersiz kılmak için gereken UIActivity alt sınıfında

- (void) dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion 
{ 
    [super dismissViewControllerAnimated:flag completion:^{ 
     [self.MPActivityDelegate activityDidRequestTransactionEdit]; 

    }]; 
} 

çalışma Çözüm


kendi tamamlama bloğu ile yöntemi: 's dismissViewControllerAnimated MPEditMyDataViewController.h'nizde

(t Eğer MPEditMyDataViewController kadar

@property (strong, nonatomic) MPEditMyDataActivity *activity; 

gibi etkinlik alt sınıfa geri bir özellik ihtiyaç o seçilmiş eylem üretmelidir denetleyicisi) görüntüleyin.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] 
            initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
            target:self 
            action:@selector(cancel)]; 

    self.navigationItem.leftBarButtonItem = cancelButton; 
} 
// here's how you dismiss the view controller when you are done with it 
// after saving the changes to your data or whatever the view controller is supposed to do. 
-(void) cancel 
{ 
    NSLog(@"Cancel Button Pushed"); 
    [self.activity activityDidFinish:YES]; 
} 
@end 

cevap

3

kazma biraz daha belgelerine mü ve buradan dönen yerine onu segue çalışarak UIActivity altsınıflamayla

- (UIViewController *) activityViewController 

o zaman istediğim gibi pop up benim görünümü denetleyicisi alır için bu yöntemi bulundu benim detailViewController. Şimdi işim bittiğinde nasıl işten çıkarılacağını anlamaya !!

+0

Başkasının sorun yaşadığı durumlarda takip etmek için yukarıdaki düzenleme örneğinde çözüm örneğine bakın. – vichudson1