#xcode #uitableview #core-data #mfmailcomposeviewcontroller
#xcode #uitableview #core-data #mfmailcomposeviewcontroller
Вопрос:
Хорошо, позвольте мне попытаться задать вопрос получше.
В моем приложении есть TableViewController, содержащий некоторую информацию, которую пользователь хотел бы отправить кому-либо по электронной почте с этими данными из tableview.
Я мог бы сохранить массив с этой информацией.
Сложная часть вопроса заключается в том, как мне заполнить тело сообщения данными из моего tableview, используя язык objective-c.
Должен ли я создавать огромную строку, содержащую весь HTML-код? Или есть лучший / более простой способ обойти это? Даже если это простая на вид таблица, просто чтобы клиент отправил ее кому-нибудь.
Я думаю, что любое решение / совет могли бы стать для меня отличной отправной точкой, чтобы узнать, как мне следует с этим работать.
Комментарии:
1. Что вы подразумеваете под «выглядит точно так же»? Вы хотите что-то, что буквально похоже на скриншот табличного представления? Или вы хотите разложить свои элементы по строкам?
2. @quixoto: Скриншот не сработал бы, потому что он не захватил бы элементы дальше, где вы прокручиваете, поэтому я хочу расположить свои элементы. Есть идеи о том, как форматировать? Я мог бы просто добавить туда массив, но это выглядело бы некрасиво
Ответ №1:
Я, черт возьми, справился с этим! Если вы, ребята, когда-нибудь захотите создать электронное письмо, используя данные из вашего UITableViewController, вот как я это сделал. Просто не забудьте импортировать файл заголовка ваших данных…
#import Recipe.h //in the implementation file
#import Ingredients.h //in the implementation file
#import <MessageUI/MFMailComposeViewController.h> // this line gotta be in the header file
-(IBAction)sendmail{
MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init];
[composer setMailComposeDelegate:self];
NSString *recipeTitle = @"<h5>Recipe name: ";
recipeTitle = [recipeTitle stringByAppendingFormat:recipe.name];
recipeTitle = [recipeTitle stringByAppendingFormat:@"</h5>"];
NSString *ingredientAmount = @"";
NSString *ingredientAisle = @"";
NSString *ingredientTitle = @"";
NSString *tableFirstLine = @"<table width='300' border='1'><tr><td>Ingredient</td><td>Amount</td><td>Aisle</td></tr>";
NSString *increments = @"";
increments = [increments stringByAppendingFormat:recipeTitle];
increments = [increments stringByAppendingFormat:tableFirstLine];
int i;
for (i=0; i < [ingredients count]; i ) {
Ingredient *ingredient = [ingredients objectAtIndex:i];
ingredientTitle = ingredient.name;
ingredientAmount = ingredient.amount;
ingredientAisle = ingredient.aisle;
increments = [increments stringByAppendingFormat:@"<tr><td>"];
increments = [increments stringByAppendingFormat:ingredientTitle];
increments = [increments stringByAppendingFormat:@"</td><td>"];
increments = [increments stringByAppendingFormat:ingredientAmount];
increments = [increments stringByAppendingFormat:@"</td><td>"];
increments = [increments stringByAppendingFormat:ingredientAisle];
increments = [increments stringByAppendingFormat:@"</td></tr>"];
if (i == [ingredients count]) {
//IF THIS IS THE LAST INGREDIENT, CLOSE THE TABLE
increments = [increments stringByAppendingFormat:@"</table>"];
}
}
NSLog(@"CODE:: %@", increments);
if ([MFMailComposeViewController canSendMail]) {
[composer setToRecipients:[NSArray arrayWithObjects:@"123@abc.com", nil]];
[composer setSubject:@"subject here"];
[composer setMessageBody:increments isHTML:YES];
[composer setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:composer animated:YES];
[composer release];
}else {
[composer release];
}
}
Это был огромный шаг для меня, и он на самом деле очень полезен, если вы хотите создать интересные (базовые) инструменты в своем приложении.
Спасибо всем на этом типичном веб-сайте для программистов objective-c.
И вот результат, который вы получаете. Простой, но хороший способ начать.
Комментарии:
1. Как и было обещано. Вот скриншот. Очень простая таблица, но все основы здесь.