PresentViewController需要花费很多时间

时间:2014-07-24 07:15:15

标签: ios objective-c cocoa-touch uinavigationcontroller

我有一个非常奇怪的情况:由presentViewController调用的视图控制器需要花费大量时间来加载。我的意思是准备阶段需要花费很多时间,尽管整个动画执行得很快。从提供的控制器返回到前一个控制器很好。

我有什么线索?

首先,我在第一个viewWillAppear 准备我的下一个视图控制器:

METAddEventViewController *controller = [self.storyboard 
instantiateViewControllerWithIdentifier:@"addEventView"];

self.nextController =
[[UINavigationController alloc] initWithRootViewController:controller];

其中self.nextController非原子且强大。

所以,我调用下一个控制器的方法非常简单:

- (IBAction)addMeetingButtonPressed:(id)sender {
[self.addMeetingButton setImage:[UIImage imageNamed:@"addMeeting-pressed@2x.png"] forState:UIControlStateNormal];

[self presentViewController:self.nextController animated:YES completion:^{
    NSLog(@"Completed");
}]; 
}

METAddEventViewController仅为UITableViewController,静态单元格为4:2基本单元格,1个单元格为UIDatePicker,1个单位为UITextView

所以,我的viewDidLoadviewWillAppear

- (void)viewDidLoad
{
self.appointMeetingButton.enabled = NO;

self.title = @"Create Meeting";

self.commentaryView.delegate = self;

[super viewDidLoad];
}

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[self navigationController] setNavigationBarHidden:NO animated:NO];
self.commentaryView.text = @"Enter comment for the meeting if needed";
self.commentaryViewFilled = NO;
self.commentaryView.textColor = [UIColor lightGrayColor];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(updateSelectedPersonCalled:)
                                             name:@"updateSelectedPersonLabel"
                                           object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(updateSelectedPersonCalled:)
                                             name:@"updateSelectedLocationLabel"
                                           object:nil];


[self.datePicker addTarget:self action:@selector(meetingAppointable) forControlEvents:UIControlEventValueChanged];

}

我运行了Profiling,发现最耗时的操作是分配操作。但是,viewDidLoad的{​​{1}}和viewWillAppear都很好 - 大约10毫秒。 他们中的大部分时间都需要配置METAddEventController

我该怎么办?我可以提供哪些附加信息来找到解决方案?

0 个答案:

没有答案