管理来自其他课程的观点

时间:2015-05-07 08:25:35

标签: objective-c oop viewcontroller code-organization

我有几个需要进行Parse服务调用的视图控制器,因此在每个" Parse"相关工作。

现在我有一个案例,其中解析响应(如果没有明显错误出现)实例化具有某些参数的MFMessageComposeViewController。

文本正文来自解析,收件人来自班级。

我的问题是:我有复制/粘贴的代码,我无法摆脱因为我不知道该怎么做

在我的控制器类中,我这样做:

- (void)showSMS:(NSString*)reciever {   //This is the phone number 

    if(![MFMessageComposeViewController canSendText]) {
        UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ALERT_ERROR_Title", nil) message:NSLocalizedString(@"ALERT_ERROR_NOSMS", nil) delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [warningAlert show];
        return;
    }

    [[ParseService sharedInstance]sendSMSOfType:SMS_TYPE_INSIST toRecipient:reciever andBlock:^(NSError *error, NSString *body) {

        if (!error){

            MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
            messageController.messageComposeDelegate = self;

            NSArray *recipents = [[NSArray alloc]initWithObjects:reciever, nil];
            [messageController setRecipients:recipents];

            [messageController setBody:body];

            [self presentViewController:messageController animated:YES completion:nil];
        }else{

            UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error getting sms" message:@"Couldn't get the text online" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [warningAlert show];
            return;   
        } 
    }];
}

我在3个不同的地方有完全相同的代码块,除了一个差异,SMS_TYPE参数。

我该怎么调整这个,所以我不必在每个控制器中创建和分配参数,有一条看起来像这样的整齐线[??? setUpMessageControllerWithParam:recipients:body];

这里的整个完成块几乎让我很烦恼,但是我无法将它放在其他地方,因为如果self isn&#我在self上呈现视图时遇到问题39;同样适用于,delegates的VC alerts

这对大多数人来说可能很简单,我只是OOP延迟。非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点...比如使用此方法创建基本视图控制器传递自定义参数并从中继承其他视图控制器,或者您可以使用此方法创建类别并导入此类别和在任何需要的地方使用......