2014-12-06 71 views
0

我想在xcode中添加一个新页面到page-based项目,DataViewController占用整个屏幕,所以我无法在RootVC上添加任何按钮。所以,当我在DataVC添加IBAction,有一种崩溃,我不明白为什么,除了只是说UIPageViewController崩溃,试图将新页面添加到模型

线程1,断点1.1

下面是代码:

//in DataVC, not sure if it is ok to create the DataVC inside itself 
- (IBAction)addOne:(id)sender { 
    DataViewController *dvc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"DataViewController"]; 
    [[ModelController sharedModelController] addOneToModel:dvc]; 
} 

//in ModelController 
-(void) addOneToModel:(DataViewController*)dvc{ 
    [self.pageData addObject:dvc];//ERROR HERE: not much details : "thread 1, breakpoint 1.1" 
} 

//the sharedMOdelController 
+(instancetype)sharedModelController{ 
    static dispatch_once_t once; 
    static ModelController *sharedInstance; 
    dispatch_once(&once, ^{ 
     sharedInstance = [[ModelController alloc] init]; 
    }); 
    return sharedInstance; 
} 
+0

你如何使用pageViewController,你如何设置viewControllers属性,你如何使用数据源,你可以把一些源代码?你放的代码没有任何有趣的地方。 – Sandeep 2014-12-06 16:09:55

+0

感谢@ insane-36的支持,这是当你创建一个基于xcode的新页面时的项目。我只是简单地添加了上面的代码,但我必须使用“mutableCopy”而不是“copy”作为可变数组。无论如何感谢 – Paul 2014-12-06 17:31:05

回答

0

你将不得不做更多的侦探工作。记录您新创建的DataViewController以确保它不是零,并且是您认为它的那种对象。

也有可能你在那条线上有一个断点并且看不到它。 Xcode IDE和调试器命令行维护单独的断点列表,并且我看到断点从IDE中消失,但仍显示在调试器命令行中。你试过继续吗?

您可能还想禁用所有断点并查看会发生什么。

您可能还想尝试为所有Objective-C异常添加异常断点。有时当发生异常时提供更多信息。

+0

谢谢邓肯,你是对的,当我继续我发现问题是当我将一个数组复制到一个mutableArray中时,我应该在默认情况下在项目创建的pageData变量上使用“mutableCopy”。所以,如果你不介意的话,我还会遇到另一个问题:当我到达“十二月”的页面时(该项目是在xcode中创建基于页面的项目时出现的那个项目),即使我将新页面添加到模型,pageViewController在十二月停止。你知道为什么吗?该项目使用pageData上的“count”来知道页数,并且我在pagedata中添加了一个新项目... – Paul 2014-12-06 17:30:04