Apple Docs表示您可以使用UIActivityItemSource
协议自定义与UIActivityViewController
共享的邮件,以代替UIActivityItemProvider
对象:
UIActivityItemSource
您可以在希望从应用程序的某个现有对象提供数据而不是创建单独的UIActivityItemProvider对象的情况下使用此协议。
我已经采用了这个协议,但是下面的委托方法似乎没有被解雇。任何人都可以确认这应该有效,如果有的话,请指出我可能会失踪的东西?提前感谢任何建议。
-(NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(UIActivityType)activityType
{
NSLog(@"DELEGATE METHOD CALLED");//Not logging to console
if (activityType == UIActivityTypeMessage) {
return @"My message";
} else if (activityType == UIActivityTypeMail) {
return @"My email text";
}
else {
return @"My default text";
}
}
答案 0 :(得分:1)
是的,这个委托方法适用于我,并调用委托方法。我使用以下代码创建活动项控制器:
var config = {
apiKey: "AIzaSyAqFmfmNWi95nt6TemvBMjPepulwV5WyZg",
authDomain: "define-web-ext.firebaseapp.com",
databaseURL: "https://define-web-ext.firebaseio.com",
projectId: "define-web-ext",
storageBucket: "",
messagingSenderId: "217235378805"
};
firebase.initializeApp(config);
其中NSArray *theItems = @[ self ];
UIActivityViewController *theController = [[UIActivityViewController alloc] initWithActivityItems:theItems applicationActivities:nil];
theController.popoverPresentationController.barButtonItem = self.shareButton;
theController.excludedActivityTypes = @[ UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll, UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo, UIActivityTypeAirDrop ];
[self presentViewController:theController animated:YES completion:NULL];
实现self
。