【发布时间】:2013-09-19 17:15:39
【问题描述】:
我在 iOS 7 中遇到了在 iOS 6 中没有出现的问题。
我有一个导航控制器,它显示另一个导航控制器以添加员工。这第二个控制器正在以模态方式呈现。当我使用“取消”或“完成”按钮关闭第二个控制器时,出现错误。这是错误:
QuickSchedule[880:60b] 警告:尝试从视图中关闭 演示文稿时的控制器 或正在解雇!
我正在使用 unwind segue 并使用以下相关代码从第一个控制器中解散。
这是在 ScheduleViewController.m(我的主控制器窗口)中
- (IBAction)done:(UIStoryboardSegue *)segue
{
if ([[segue identifier] isEqualToString:@"DoneEditing"]) {
[[MyManager sharedManager] saveChanges];
[self dismissViewControllerAnimated:YES completion:NULL];
}
}
“完成”按钮的连接检查器中的连接很简单 “动作-> [展开完成:]”
在升级到 Xcode 5 之前我没有任何错误。这一切都是在将 Xcode 和我的故事板升级到 iOS 7 之后开始的。
我在我的应用程序的不同位置遇到相同的错误,但同样,它是使用模态呈现的视图控制器。
我以模态方式从 EmployeeViewController 转到 AddEmployeeViewController。当我从 AddEmployeeViewController 返回时,我再次收到错误。
EmployeeViewController.m
- (IBAction)done:(UIStoryboardSegue *)segue
{
if ([[segue identifier] isEqualToString:@"ReturnInput"]) {
AddEmployeeViewController *addController = [segue sourceViewController];
if (addController.employee) {
[[MyManager sharedManager] saveChanges];
[[self tableView] reloadData];
}
if (![self.presentedViewController isBeingDismissed]) {
[self dismissViewControllerAnimated:YES completion:nil];
}
}
}
- (IBAction)cancel:(UIStoryboardSegue *)segue
{
if ([[segue identifier] isEqualToString:@"CancelInput"]) {
[self dismissViewControllerAnimated:YES completion:NULL];
}
}
这里是 AddEmployeeViewController.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"ReturnInput"]) {
if ([self.firstNameField.text length] || [self.lastNameField.text length]) {
Employee *newEmployee = [[MyManager sharedManager] createEmployeeWithFirstName:self.firstNameField.text andLastName:self.lastNameField.text];
[[MyManager sharedManager] addEmployeeToList:newEmployee];
self.employee = newEmployee;
}
}
}
我还在学习,我在网上找了几个小时,找不到答案。我尝试将“保存代码”放在完成块中。我把它放回去并尝试在完成块参数中使用 nil 而不是 NULL 。如您所见,我在完成块参数的一个位置有 nil ,在另一个位置有 NULL 。无论如何,错误一直出现。
就功能而言,一切正常,我只是将此错误记录到控制台。非常感谢任何帮助。
注意: 使用常规推送导航控制器时,我不会收到此错误。这只发生在关闭模态呈现的视图控制器时。
【问题讨论】:
-
你是从按钮触发的展开segue,还是直接连接到视图控制器?
-
它连接到我的 AdEmployeeViewController 上的 UIBarButtonItems Done 和 Cancel,以及返回到 ScheduleViewController 的视图控制器上的 UIBarButtonItem Done。
标签: iphone ios uiviewcontroller ios7