2013-11-16 4 views
0

Я понятия не имею, почему авария uiactivityviewcontroller возникает, когда я использую метод prensentViewController.Ошибка UIActivityViewController

Странно, любой имеет ключ?

программа работает нормально, не исчезает, когда я использую presenviewcontroller.

#import "ActivityViewController.h" 

@interface ActivityViewController() 

@end 

@implementation ActivityViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    [self createTextField]; 
    [self createButton]; 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (void) createTextField 
{ 
    self.myTextField = [[UITextField alloc] initWithFrame:CGRectMake(20.0f, 35.0f, 280.0f, 30.0f)]; 
    self.myTextField.translatesAutoresizingMaskIntoConstraints = NO; 
    self.myTextField.borderStyle = UITextBorderStyleRoundedRect; 
    self.myTextField.placeholder [email protected]"Enter text to Share"; 
    self.myTextField.delegate = self; 
    [self.view addSubview:self.myTextField]; 
} 

- (void) createButton 
{ 
    self.myButtonShare = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    self.myButtonShare.frame = CGRectMake(20.0f, 80.0f, 280.0f, 40.0f); 
    self.myButtonShare.translatesAutoresizingMaskIntoConstraints = NO; 


    [self.myButtonShare setTitle:@"Share" forState:UIControlStateNormal]; 
    [self.myButtonShare addTarget:self action:@selector(handleShare:) forControlEvents:UIControlEventTouchUpInside]; 

    [self.view addSubview:self.myButtonShare]; 



} 

- (void) handleShare:(id)sender 
{ 

    NSArray *activities = @[UIActivityTypeMail,UIActivityTypeMessage]; 

    self.myActivityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self.myTextField.text] applicationActivities:activities]; 

    [self presentViewController:self.myActivityViewController animated:YES completion:nil]; 

} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [self.myButtonShare resignFirstResponder]; 
    return YES; 
} 
+1

«Сбой» не очень помогает при диагностике проблемы. Вам, вероятно, потребуется предоставить более подробную информацию ... – nhgrif

+1

Какая конкретная ошибка вы получаете. – logixologist

ответ

0

документация для initWithActivityItems:applicationActivities: государств UIActivityViewController о том, что NSArray передается в качестве второго параметра (applicationActivities) должен быть «массив UIActivity». Вы передаете массив, содержащий два объекта: UIActivityTypeMail и UIActivityTypeMessage, которые имеют тип NSString * const. Кажется, вы надеялись, что вы можете ограничить общий доступ, чтобы показывать активность почты и сообщений, что в настоящее время невозможно.

Чтобы остановить аварии не произошло, изменить ваш код:

<...> 
self.myActivityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self.myTextField.text] applicationActivities:nil]; 
<...> 
1

Что ccjensen сказал все правильно, за исключением того, вы можете ограничить долю лист просто почта & сообщение Исключив деятельности, таким образом, для пример:

activityController.excludedActivityTypes = @[ UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList ]; 

Это будет показывать только общий доступ по электронной почте.

Смежные вопросы