Добавление пользовательского интерфейса в MFMailComposeViewController

#ios #mfmailcomposeviewcontroller

#iOS #mfmailcomposeviewcontroller

Вопрос:

я добавил пользовательский интерфейс, и теперь мне интересно, как бы я добавил состояние в электронное письмо, например, если оно включено, я хочу, чтобы в электронном письме было указано «включено». В настоящее время у меня есть это.

 - (IBAction)sendtoStudentathome:(id)sender {
MFMailComposeViewController *mailContoller = [[MFMailComposeViewController alloc]init];
[mailContoller setMailComposeDelegate:self];
NSString *email = @"admin@blah.co.uk";
NSArray *emailArray = [[NSArray alloc]initWithObjects:email, nil];
NSString *message = [@[_NameofResident.text, _NameofStudent.text, _AppointmentTime.date,     _NextAppointmentTime.date, _Confirmed.text, myswitch]componentsJoinedByString: @"n"];
[mailContoller setMessageBody:message isHTML:NO];
[mailContoller setToRecipients:emailArray];
[mailContoller setSubject:@"Feedback"];
[self presentViewController:mailContoller animated:YES completion:nil];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[[self NameofResident] resignFirstResponder];
}

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
[self dismissViewControllerAnimated:YES completion:nil];
}
  

в сообщении у меня есть текстовые поля, которые отлично добавляются в электронное письмо, единственное, что не добавляется правильно, — это UISwitch, помеченный как myswitch.

заранее спасибо.

Ответ №1:

Пожалуйста, обратитесь к приведенному ниже коду, создайте одно свойство NSString, изначально установите для его текста значение «выкл», поскольку начальное состояние переключателя выключено, и с помощью состояния переключателя измените текст.

     @property (nonatomic, retain) NSString *strOnOff;

      UISwitch *onoff = [[UISwitch alloc] initWithFrame: CGRectZero];
            onoff.frame = CGRectMake(0,100,100,50);
            strOnOff = @"off";
            [onoff addTarget: self action: @selector(flip:) forControlEvents:UIControlEventValueChanged];
            // Set the desired frame location of onoff here
            [self addSubview: onoff];

-(void)gototest:(UIButton*)sender
{

    MFMailComposeViewController *mailContoller = [[MFMailComposeViewController alloc]init];
    [mailContoller setMailComposeDelegate:self];
    NSString *email = @"admin@blah.co.uk";
    NSArray *emailArray = [[NSArray alloc]initWithObjects:email, nil];
    NSString *message = [NSString stringWithFormat:@"%@",strOnOff];
    [mailContoller setMessageBody:message isHTML:NO];
    [mailContoller setToRecipients:emailArray];
    [mailContoller setSubject:@"Feedback"];
    [delegate presentViewController:mailContoller animated:YES completion:nil];
}

        - (void)flip:(id)sender {
            if (onoff.on)
            {
                strOnOff = @"On";

            }
            else
            {
                strOnOff = @"Off";
            }
        }
  

Комментарии:

1. есть ли способ упростить его, т.Е. Я хочу, чтобы пользовательский интерфейс включался и выключался в ярлыке, и в зависимости от того, в каком состоянии его набор в этом ярлыке добавляется в почтовый композитор?

2. @user3725924 я уже добавил текст состояния пользовательского интерфейса в mail composer, пожалуйста, проверьте мой код. При нажатии на кнопку, которая показывает MFMailComposeViewController, я добавил «strOnOff» в текст сообщения mail composer, который является текстом пользовательского интерфейса.

Ответ №2:

Вам нужно будет создать строку, основанную на том, что UISwitch включен / ВЫКЛЮЧЕН, а затем использовать эту строку для передачи вашего сообщения.

 if ([myswitch isOn]) {
    NSLog(@"its on!");
} else {
    NSLog(@"its off!");
}
  

Комментарии:

1. нет, в общем, при использовании только myswitch, когда я добавляю в этот код, ничего не происходит.

2. @user3725924 Вы добавляете элемент управления UISwitch в NSString, из-за этого вы получаете эту ошибку. Используйте мой подход и добавьте строку, а не UISwitch, в строку вашего сообщения.

3.есть ли способ упростить его, т.Е. Я хочу, чтобы пользовательский интерфейс включался и выключался в ярлыке, и в зависимости от того, в каком состоянии его набор в этом ярлыке добавляется в почтовый композитор?