Как изменить детали сообщения (тело письма) в MFMailComposeViewController?

Кажется, я попал в ловушку чего-то, что кажется очень простым!

Как теперь заполнить тело письма строками, которые пользователь ввел в NSUserDefaults?

По сути, есть еще одна кнопка, которая вводит в NSUserDetaults такое сообщение, как «YES». Как мне сделать тело электронной почты этими сохраненными строками.

Это код, который у меня сейчас есть:

- (IBAction)buttonPressed:(id)sender {
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"SYS"];
[controller setMessageBody:@"How do I make this the content of NSUSERDEFAULTS?" isHTML:NO];
controller.navigationBar.barStyle = UIBarStyleBlack;
[self presentViewController:controller animated:YES completion:nil];

Любая помощь будет принята с благодарностью!

Спасибо!

Используя ваш код, строки выглядят так: Да, Нет, Возможно, Ни в коем случае,

Как я могу изменить формат, чтобы они отображались

Да,

No,

Может быть,

Ни за что.

Еще раз спасибо за ваше время!


person Andy A    schedule 02.04.2013    source источник
comment
Только что отредактировал мой ответ.   -  person daltonclaybrook    schedule 03.04.2013


Ответы (2)


Что вам нужно, так это символ разрыва строки, которого можно добиться с помощью \n (новая строка).

NSArray *storedStrings = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourStoredKey"];
NSMutableString *messageBody = [NSMutableString string];
for (NSString *aString in storedStrings) {
    [messageBody appendFormat:@"%@,\n\n", aString];
}
[messageBody deleteCharactersInRange:NSMakeRange(messageBody.length-3, 3)];
[controller setMessageBody:messageBody isHTML:NO];

Эта строка, которую я добавил сразу после цикла for, удалит последние три символа из строки, то есть два символа новой строки и запятую.

person daltonclaybrook    schedule 02.04.2013
comment
Привет, большое спасибо за ваш ответ. Ваш код в значительной степени на месте! Это массив строк, который заканчивается в NSUserDefaults, поэтому ваш второй блок кода идеален. Последнее, однако, знаете ли вы, как я мог бы изменить этот код, чтобы а) жала отображались вертикально друг над другом (я обновил вопрос с примером) б) вместо последней строки после нее стоит точка запятой? Еще раз спасибо за ваше время! - person Andy A; 03.04.2013
comment
Привет, большое спасибо за помощь, я очень ценю это! Ваше обновление отлично отвечает на мой вопрос. Если у вас есть свободная секунда, не могли бы вы также взглянуть на мой другой вопрос без ответа - Проблема с макетом Xcode UIImageView (просто зайдите в мой профиль). Я уверен, что это будет что-то тупо просто тоже, но пока у меня нет ответов! Думаю, это прошло мимо людей. В очередной раз благодарим за помощь. - person Andy A; 03.04.2013

Попробуйте этот метод

- (IBAction)buttonPressed:(id)sender {
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"SYS"];
[controller setMessageBody:[[nsstring stringwithformat@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"yourStoredKey"]]  isHTML:NO];
controller.navigationBar.barStyle = UIBarStyleBlack;
[self presentViewController:controller animated:YES completion:nil];
person dhaya    schedule 03.04.2013