iOS 6 には表示されない iOS 7 の問題があります。
従業員を追加するために別のナビゲーション コントローラーを表示しているナビゲーション コントローラーがあります。この 2 番目のコントローラーはモーダルで表示されます。「キャンセル」または「完了」ボタンで 2 番目のコントローラーを閉じると、エラーが発生します。エラーは次のとおりです。
QuickSchedule[880:60b] 警告: プレゼンテーションまたは却下の進行中にビュー コントローラから却下しようとしました!
アンワインド セグエを使用し、次の関連コードを使用して最初のコントローラーを閉じています。
これは 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;
}
}
}
私はまだ学んでおり、オンラインで何時間も探しましたが、これに対する答えが見つかりません. 「保存コード」を完了ブロックに入れてみました。私はそれを元に戻し、完了ブロックの引数で NULL の代わりに nil を使用してみました。ご覧のとおり、完了ブロックの引数のある場所には nil があり、別の場所には NULL があります。何をしても、エラーが表示され続けます。
すべてが機能する限り機能します。このエラーがコンソールに記録されるだけです。どんな助けでも大歓迎です。
注: 通常のプッシュ ナビゲーション コントローラーではこのエラーは発生しません。これは、モーダルに表示されたビュー コントローラーを閉じるときにのみ発生します。