问题描述
我为 MFMessageComposeViewController
创建了一个辅助类,因此我使用 MFMessageComposeViewController 作为基类创建了我的类,而不是视图控制器。这是下面的代码
SMSMessageController.h
#import <MessageUI/MessageUI.h>
NS_ASSUME_NONNULL_BEGIN
@interface SMSMessageController : MFMessageComposeViewController
@property (strong,nonatomic) Nsstring *messageBody;
@property (strong,nonatomic) Nsstring *receivingNumber;
@end
NS_ASSUME_NONNULL_END
SMSMessageController.m
#import "SMSMessageController.h"
@interface SMSMessageController ()<UINavigationControllerDelegate,MFMessageComposeViewControllerDelegate>
@end
@implementation MessageControllerKony
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.body = self.messageBody;
NSLog(@"SMS BODY%@",self.messageBody);
self.recipients = [NSMutableArray arrayWithObject: @"13123123"];
self.messageComposeDelegate = self;
}
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
//test result
switch (result) {
case MessageComposeResultCancelled:
NSLog(@"Result: SMS sending canceled") ;
break;
//message was sent
case MessageComposeResultSent:
NSLog(@"Result: SMS sent");
break;
case MessageComposeResultFailed:
NSLog(@"Result: SMS sending Failed");
break;
default:
break;
}
//dismiss view
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
现在我试图在按钮操作上从另一个名为“ViewController B”的控制器呈现这个控制器。我试图将值从此控制器传递给 messageBody
的 MessageControllerKony.h
变量。按钮动作是这样的:
- (IBAction)smsAction:(id)sender {
self.messageController = [[MessageControllerKony alloc]init];
self.messageController.messageBody = @"jfhjkhasfjhkwhfhdfjkjkfbhiehf";
[self presentViewController:self.messageController animated:YES completion:nil];
}
但不幸的是,当 MFMessageComposeViewController 出现时,messageBody
的值为 null。在这种情况下我做错的地方。为什么我的变量没有传递给 MessageControllerKony.h
类?
解决方法
好的 - 您已经继承了 MFMessageComposeViewController
,因此您的类可以使用它的属性/方法。
您的 .h
文件中不需要这些:
//@property (strong,nonatomic) NSString *messageBody;
//@property (strong,nonatomic) NSString *receivingNumber;
您可以像这样调用自定义 MFMessageComposeViewController
:
self.messageController = [[MessageControllerKony alloc]init];
//self.messageController.messageBody = @"jfhjkhasfjhkwhfhdfjkjkfbhiehf";
[self.messageController setBody:@"jfhjkhasfjhkwhfhdfjkjkfbhiehf"];
[self.messageController setRecipients:[NSArray arrayWithObject: @"13123123"]];
[self presentViewController:self.messageController animated:YES completion:nil];