- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我已经看过相关的问题,但是没有任何问题可以解决我的问题。
我正在尝试连续使用dismissViewControllerAnimated:animated:completion
和presentViewControllerAnimated:animated:completion
。使用 Storyboard ,我通过部分 curl 动画模态呈现InfoController。
部分 curl 在InfoController上显示了一个我想启动MFMailComposeViewController
的按钮。因为部分 curl 部分隐藏了MFMailComposeViewController
,所以我首先要通过取消部分 curl 的动画来关闭InfoController。然后我想要MFMailComposeViewController
进行动画处理。
目前,当我尝试此操作时,部分 curl 不会激活,但是MFMailComposeViewController
没有显示出来。我也有以下警告:
Warning: Attempt to present MFMailComposeViewController: on InfoController: whose view is not in the window hierarchy!
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
@interface InfoController : UIViewController <MFMailComposeViewControllerDelegate>
@property (weak, nonatomic) IBOutlet UIButton *emailMeButton;
-(IBAction)emailMe:(id)sender;
@end
#import "InfoController.h"
@interface InfoController ()
@end
@implementation InfoController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)emailMe:(id)sender {
[self dismissViewControllerAnimated:YES completion:^{
[self sendMeMail];
}];
}
- (void)sendMeMail {
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
if([MFMailComposeViewController canSendMail]){
if(mailController)
{
NSLog(@"%@", self); // This returns InfoController
mailController.mailComposeDelegate = self;
[mailController setSubject:@"I have an issue"];
[mailController setMessageBody:@"My issue is ...." isHTML:YES];
[self presentViewController:mailController animated:YES completion:nil];
}
}
}
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error;
{
if (result == MFMailComposeResultSent) {
NSLog(@"It's sent!");
}
[self dismissViewControllerAnimated:YES completion:nil];
}
[self dismissViewControllerAnimated:YES completion:^{}];
中注释掉
(IBAction)emailMe
,则
MFMailComposeViewController
会动画化,但它会部分隐藏在部分 curl 的后面。如何首先消除 curl ,然后在
MFMailComposeViewController
中设置动画?
[self dismissViewControllerAnimated:YES completion:^{}];
,则 View 外观如下图所示
最佳答案
这是由于不清楚的父 subview Controller 关系导致的 View Controller 之间的通信问题。如果不使用协议(protocol)和委托(delegate),则无法正常工作。
经验法则是:
@protocol InfoControllerDelegate
- (void)returnAndSendMail;
@end
@interface InfoControllerDelegate : UIViewController // …
@property (assign) id<InfoControllerDelegate> delegate
// ...
@end
@interface MainController <InfoControllerDelegate, MFMailComposeViewControllerDelegate>
@property (strong) InfoController *infoController;
@property (strong) MFMailComposeViewController *mailComposer;
// however you get the reference to InfoController, just assuming it's there
infoController.delegate = self;
[self presentViewController:infoController animated:YES completion:nil];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// hook in the segue to set the delegate of the target
if([segue.identifier isEqualToString:@"infoControllerSegue"]) {
InfoController *infoController = (InfoController*)segue.destinationViewController;
infoController.delegate = self;
}
}
- (IBAction)sendEmailButtonPressed:(id)sender {
// this method dismisses ourself and sends an eMail
[self.delegate returnAndSendMail];
}
- (void)returnAndSendMail {
// dismiss the InfoController (close revealing page)
[self dismissViewControllerAnimated:YES completion:^{
// and present MFMailController from MainController
self.mailComposer.delegate = self;
[self presentViewController:self.mailComposer animated:YES completion:nil];
}];
}
关于iphone - 警告: Attempt to present ViewController on ViewController whose view is not in the window hierarchy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16384121/
我们正在创建一个 REST API,我们目前有两种定义资源的方法。 基本上我们有 Patients , Studies和 Images哪里Patient有 n Studies和一个 Study有 n
我想知道哪一种更好的方法来实现一个被设计为具有复杂 subview 层次结构的 View ,比如说一个 View ,左侧有一个 subview ,右侧有一个 subview ,左侧 subview 有
启动布局检查器时收到错误消息:“获取 View 层次结构时出错:意外错误:空 View 层次结构”。 同样在 Logcat 中有一个异常(exception): 12-10 23:46:56.812
我一直在寻找要在我工作的公司的Web开发部门中实施的Web开发人员指定层次结构。 例如:关联Web开发人员-> Web开发人员->高级Web开发人员->接下来做什么? 请建议..! 最佳答案 “Web
我明白那个: 更快 访问时间> 更多 昂贵的 较慢 访问时间> 减 昂贵的 我也明白寄存器是层次结构的顶部,并且具有最快的访问时间。我很难研究的是为什么它这么贵?据我所知,寄存器实际上是直接内置在 A
我希望有人经历过相同的过程并可以帮助我看看以下情况是否可能。 我目前构建了一个从 S3 存储桶进行复制的管道。该存储桶包含大量文件夹。 Azure 数据工厂是否有办法在从 S3 存储桶复制数据时忽略文
在我看来,定义 static namedQueries = {} 在层次结构的子类中完全屏蔽了父类(super class)的 namedQueries 声明。有没有办法让两者都工作?说使用 supe
我希望有人经历过相同的过程并可以帮助我看看以下情况是否可能。 我目前构建了一个从 S3 存储桶进行复制的管道。该存储桶包含大量文件夹。 Azure 数据工厂是否有办法在从 S3 存储桶复制数据时忽略文
我遇到了以下嵌套数组,并且对它为什么使用这种特定语法有点困惑: var allQuestions = [{ question: "Which company first implemented
在过去的一个月里,我一直在构建一个 Drupal 8 站点,它应该有一个类似于这样的愚蠢的简单页面层次结构: Parent Page --Child Page --Child Page ----Gra
我正在寻求理解 Delphi 7 中其他人的代码(我怀疑较新的版本内置了此代码,但我不想为最新版本花费 > 1000 美元)。 他们有(最好是FOSS)工具可以帮助我生成类层次结构图吗? 其实就是G
我目前有这两个实体:名义上的和熟悉的(家庭/亲属/亲戚)。 熟悉的 [0..*][1] 标题 这两个类具有一个人的共同属性(名字,姓氏,出生日期......),并且它们是两种附属 我想将它们统一在一个
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
是否可以通过层次结构 id 对层次结构中的 sql 数据进行排序,然后对于每个级别排序它按字母顺序说? 假设我们有一个员工表,它根据员工 ID 列出组织层次结构 你有鲍勃 (5),菲尔 (17) 和查
public class OrderEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Colu
我想知道如何编写 postgres 子查询,以便下表示例输出我需要的内容。 id parent_id postdate 1 -1 2015-03-10 2 1
我正在建立一个分类网站。你能建议我怎么做吗基于国家/地区的分区地理位置表 ??? 更新:我可以根据纬度和经度做吗? 下面是我的表结构。 CREATE TABLE IF NOT EXISTS `geo`
我正在使用 Android SDK 附带的 Hierarchy Viewer 工具进行一些测试。 我正在测试的 Activity 具有以下 xml: Sl
我已经对此进行了研究,并且知道我不是第一个提出问题的人,但我似乎无法理解它。我创建了一个简单的示例,如果有人可以提供缺失的链接,我认为它可以帮助我破解它! 我有一个区域表,其中包含层次结构中的大陆和国
我在第一个真正的 iPhone 应用程序上遇到了一些困难,想获得一些关于如何构建它的建议。我正在寻找一些关于创建 UI 组件并将它们链接在一起以创建应用程序流(以编程方式创建 View / Contr
我是一名优秀的程序员,十分优秀!