Лучший способ заполнить тело письма от uitableview - PullRequest
0 голосов
/ 13 ноября 2011

Хорошо, позвольте мне попытаться сделать этот вопрос лучше.

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

Я мог бы сохранить массив с этой информацией.

Сложная часть вопроса состоит в том, как мне заполнить тело сообщения данными из моего табличного представления, используя язык target-c?

Должен ли я сделать огромную строку, содержащую весь HTML-код?Или есть лучший / лучший способ обойти это?Даже если это простая таблица, просто клиент отправит это кому-нибудь.

Я думаю, любое решение / совет может быть для меня отличным способом узнать, как мне с этим работать.

1 Ответ

5 голосов
/ 14 ноября 2011

Я чертовски прибил это!Если вы, ребята, когда-нибудь захотите составить электронное письмо с данными из вашего 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];
    }
}

Это был огромный шаг для меня, и он очень полезен, если вы хотите создать интересные (базовые) инструменты в своем приложении.Спасибо всем на этом типичном веб-сайте для программистов target-c.

И это результат, который вы получаете.Простой, но хороший способ начать.

enter image description here

...