我正在开发一个IOS应用程序,并且已经被这个问题困扰了大约一个星期,现在无法找到解决方案。我们将非常感谢您提供的任何帮助。这是我的设置:
当第二个视图控制器以模态方式呈现时,它会出现带有导航栏的黑色屏幕。如果我以模态方式从不相关的屏幕访问第二个视图控制器,那么在没有导航栏的情况下它会很好。
当您按导航栏上的“保存”时,不记录任何错误消息,甚至没有保存对象。但是,按“保存”将返回到TableViewController,看起来实体已添加。
以下是我的TableViewController中的代码:
- (void)add:(id)sender {
SecondViewController *addController = [[SecondViewController alloc] init];
addController.delegate = self;
Entity *newEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:self.managedObjectContext];
addController.entity = newEntity;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addController];
[self.navigationController presentModalViewController:navController animated:YES];
}
- (void)secondViewController:(SecondViewController *)secondViewController didAddEntity:(Entity *)entity {
if (entity) {
[self showEntity:entity animated:NO];
}
[self dismissModalViewControllerAnimated:YES];
}
- (void)showEntity:(Entity *)entity animated:(BOOL)animated {
EntityDetailTableViewController *detailViewController = [[EntityDetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
detailViewController.entity = entity;
[self.navigationController pushViewController:detailViewController animated:animated];
}
以下是我的第二个View Controller中的代码:
- (void) save {
entity.attribute = attributeTextField.text;
NSError *error = nil;
if (![entity.managedObjectContext save:&error])
{
NSLog(@"Problem saving attribute: %@", [error localizedDescription]);
}
NSLog(@"saveAttribute");
[self.delegate secondViewController:self didAddEntity:entity];
}
关于从这里去哪里的任何建议都会非常有帮助。
答案 0 :(得分:2)
经过多次挫折后,我找到了答案。如果您使用的是故事板,则无法通过标准代码导航到下一个视图控制器。我将prepareForSegue语句放在我的TableViewController.m文件中,然后连接故事板上的连接并识别出segue。
现在,当您按下“添加”按钮时,它会转到新的视图控制器屏幕并且它不是黑色。
答案 1 :(得分:0)
我的猜测是你初始化的方式不对:
SecondViewController *addController = [[SecondViewController alloc] init];
应为initWithNIB: