Как извлечь значение TTTableSubtitleItem из Three20 - PullRequest
1 голос
/ 07 июня 2011

Я использую Three20, чтобы я мог создать опыт, аналогичный MFMailComposer, с возможностью большего контроля над тем, как отправляются сообщения и электронные письма.Я взглянул на демонстрационное приложение Three20 TTCatalog MessageController, но у него также есть та же проблема, с которой я сталкиваюсь.Когда вы выбираете контакт из указанного источника данных и нажимаете кнопку Отправить как в приложении TTCatalog, так и в моем приложении, поле «Кому» имеет значение, с которым я не знаю, как работать.Я выполнил некоторую регистрацию в своем приложении в методе MessageWillSend, и это то, что происходит, когда я выбираю один контакт, не вводя тему или сообщение в теле.

"Кому: (\ n \"\ "\ П)","Предмет: ","(null) (null)"

Тема и тело в порядке (правильный текст отображается при вводе значений), но как мне извлечь значение, которое находится в поле To:?

Я использую источник данных, описанный здесь: Как использовать Three20 TTMessageController? , поэтому в этом случае поле To должно содержать выбранный номер мобильного телефона.

Я использую Xcode 4.

1 Ответ

0 голосов
/ 08 июня 2011

Это может быть потенциально опасно, но вы можете обезопасить исправление TTMessageControllers - (void) отправить метод, чтобы использовать TTTableSubtitleItem.text вместо самого объекта для установки получателей.

- (void)send {
    NSMutableArray* fields = [[_fields mutableCopy] autorelease];
    for (int i = 0; i < fields.count; ++i) {
        id field = [fields objectAtIndex:i];
        if ([field isKindOfClass:[TTMessageRecipientField class]]) {
            TTPickerTextField* textField = [_fieldViews objectAtIndex:i];
            //Here is the important part
            NSMutableArray *recipients = [[NSMutableArray alloc] init];
            for (id textItem in textField.cells) {
                [recipients addObject:[textItem text]];
            }
            [(TTMessageRecipientField*)field setRecipients:recipients];
            [recipients release];

        } else if ([field isKindOfClass:[TTMessageTextField class]]) {
            UITextField* textField = [_fieldViews objectAtIndex:i];
            [(TTMessageTextField*)field setText:textField.text];
        }
    }

    TTMessageTextField* bodyField = [[[TTMessageTextField alloc] initWithTitle:nil
                                                                      required:NO] autorelease];
    bodyField.text = _textEditor.text;
    [fields addObject:bodyField];

    [self showActivityView:YES];

    [self messageWillSend:fields];

    if ([_delegate respondsToSelector:@selector(composeController:didSendFields:)]) {
        [_delegate composeController:self didSendFields:fields];
    }

    [self messageDidSend];
}
...