管理其他类的视图



我有几个视图控制器需要进行 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不是 VC,我将很难呈现self的观点,delegatesalerts也是如此。

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

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

最新更新