UIActivity с несколькими действиями
Я настраиваю свое приложение с помощью нескольких классов UIActivity. Процесс заключается в том, что пользователь просматривает статью и нажимает кнопку действия, чтобы открыть UIActivityViewController.
- (void)prepareWithActivityItems:(NSArray *)activityItems
{
UIAlertView* dialog = [[UIAlertView alloc] init];
[dialog setDelegate:self];
[dialog setTitle:@"Enter Password"];
[dialog setMessage:@" "];
[dialog addButtonWithTitle:@"Cancel"];
[dialog addButtonWithTitle:@"OK"];
dialog.tag = 5;
dialog.alertViewStyle = UIAlertViewStylePlainTextInput;
[dialog textFieldAtIndex:0].keyboardType = UIKeyboardTypeAlphabet;
[dialog textFieldAtIndex:0].secureTextEntry = YES;
CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0, 0.0);
[dialog setTransform: moveUp];
[dialog show];
[dialog release];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
}
if (buttonIndex == 1) {
UITextField *passwordField = [alertView textFieldAtIndex:0];
if ([passwordField.text isEqualToString:@"password"]) {
[self composetheemail];
}
else
{
UIAlertView *oops = [[UIAlertView alloc]initWithTitle:@"Whoops" message:@"That password is incorrect. Please try again." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[oops show];
[oops release];
}
}
}
-(void)composetheemail {
self.picker = [[MFMailComposeViewController alloc] init];
self.picker.mailComposeDelegate = self;
[self.picker setSubject:@"App Test"];
// Set up recipients
NSArray *churchemail = [NSArray arrayWithObject:@"email@gmail.com"];
[self.picker setToRecipients:churchemail];
// Fill out the email body text
NSString *emailBody = @"Sent from the App";
[self.picker setMessageBody:emailBody isHTML:NO];
[picker release];
}
Однако метод составления электронного письма никогда не вызывается. Что я здесь не так делаю?
1 ответ
Ваш контроллер представления должен явно соответствовать UIAlertViewDelegate
протокол иметь - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
называться.
В вашем представлении @interface контроллера (обычно в .h
файл), вам нужно включить делегат так:
@interface MyViewController : UIViewController <UIAlertViewDelegate>