iOS程序流程——等待用户输入

标签 ios

我是 iOS 编程的新手,正在尝试了解如何中断程序流以等待响应。

基本上我想从我的应用程序发送一封电子邮件,并提供数据是什么,我想提示用户添加更多信息。

即:

- (IBAction)sendEmail:(id)sender {

MyManagedObject *myObj = nil;

//Retrieve from the database.
NSManagedObjectContext *ctx = [self managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyManagedObject" inManagedObjectContext:ctx];
[request setEntity:entity];

NSError *error;
NSArray *array = [ctx executeFetchRequest:request error:&error];
NSUInteger count = [array count]; // May be 0 if the object has been deleted.
if (count > 0) {
    myObj = (MyManagedObject *)[array objectAtIndex:0];
}

 //Recipients
NSArray *toRecipents = [[NSArray alloc]init];
// Email Subject
NSString *emailTitle = [@"Report for Month of: " stringByAppendingString: dateString] ;
// Email Content
NSString *messageBody = @"";
if(myObj != nil) {
    if (myObj.firstName) {
        messageBody = [messageBody stringByAppendingString:[@"\nHello " stringByAppendingString: myObj.firstName]];
        toRecipents = [NSArray arrayWithObject:myObj.emailAddress];
    }
}
messageBody = [messageBody stringByAppendingString:@"\n\nBelow is my text...."];
messageBody = [messageBody stringByAppendingString:[@"\nMore Information...: " stringByAppendingString: myObj.moreInfo]];

NSString *addInfo = OPEN WINDOW FOR USER TO ADD INFO

if (addInfo != nil) {
messageBody = [messageBody stringByAppendingString:[@"\nAdditional Information...: " stringByAppendingString: addInfo]];
}

... send the email
}

我不确定如果没有回调是否可行。基本上我想打断流程,放置一个覆盖层并等待它关闭,然后再完成电子邮件...

最佳答案

根据我的理解,您尝试做的是显示一个自定义对话框或警报 View ,并且仅根据其返回值,代码应该进一步执行。

这么说吧,如果你显示一个 UIAlertView 里面有 UITextView 来添加更多信息,你应该将你的 sendEmail 方法移动到回调alertview 的按钮。同样,如果您要使用一些自定义对话框,那么您应该在自定义对话框中编写一个到主窗口的回调,然后在该回调中,您应该编写用于发送电子邮件的代码。

我认为,像这样的回调机制是您选择的唯一解决方案,如果您希望所有内容都写在同一个代码块中,那么我可以使用 blocks in objective-c

关于iOS程序流程——等待用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564623/

相关文章:

ios - CoreData 的 iOS 搜索时间令人失望

ios - Phonegap 中 ios 的蓝牙插件

ios - iOS 中的其他 Mtouch 参数

ios - 从 NSURL 转换时 NSString 为空

ios - 给 UIView 添加阴影

iphone - NSMutableArray 在 View Controller 确实消失并重新出现后导致 EXC_BAD_ACCESS 崩溃

javascript - Titanium 音乐播放器进度事件监听器状态未触发

ios - 我可以在 Swift 中使用 actor 始终在主线程上调用函数吗?

ios - 为 iPhone 5 屏幕尺寸命名图像的名称是什么?

iphone - iOS-开发iPhone应用程序以将相机视频流式传输到计算机吗?