IOS模态视图控制器呈现黑屏

时间:2012-01-10 21:52:43

标签: core-data

我正在开发一个IOS应用程序,并且已经被这个问题困扰了大约一个星期,现在无法找到解决方案。我们将非常感谢您提供的任何帮助。这是我的设置:

  1. 我有一个标签栏控制器。
  2. 我有一个TableViewController,它有一个带导航项“Add”的导航栏。
  3. 按下“添加”选择器后,我模拟地呈现另一个有选择器的viewController。
  4. 我正在使用Core Data。
  5. 当第二个视图控制器以模态方式呈现时,它会出现带有导航栏的黑色屏幕。如果我以模态方式从不相关的屏幕访问第二个视图控制器,那么在没有导航栏的情况下它会很好。

    当您按导航栏上的“保存”时,不记录任何错误消息,甚至没有保存对象。但是,按“保存”将返回到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];
    
    }  
    

    关于从这里去哪里的任何建议都会非常有帮助。

2 个答案:

答案 0 :(得分:2)

经过多次挫折后,我找到了答案。如果您使用的是故事板,则无法通过标准代码导航到下一个视图控制器。我将prepareForSegue语句放在我的TableViewController.m文件中,然后连接故事板上的连接并识别出segue。

现在,当您按下“添加”按钮时,它会转到新的视图控制器屏幕并且它不是黑色。

Here's a link to a useful tutorial

答案 1 :(得分:0)

我的猜测是你初始化的方式不对:

SecondViewController *addController = [[SecondViewController alloc] init];

应为initWithNIB: