无法在目标 c 中将变量的值从一个类传递到另一个类

问题描述

我为 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”的控制器呈现这个控制器。我试图将值从此控制器传递给 messageBodyMessageControllerKony.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];