boe*_*qsh 5 iphone objective-c uiscrollview uiviewcontroller ios
无法弄清楚发生了什么.
我正在构建一个使用带分页的滚动视图的iPhone应用程序.滚动视图包含多个视图,其视图控制器通过调用以下方式从故事板中加载:
[self.storyboard instantiateViewControllerWithIdentifier:@"identifier"];
Run Code Online (Sandbox Code Playgroud)
我将视图控制器添加到一个可变数组中,并将它们的视图作为子视图添加到滚动视图中.在屏幕上显示后,视图控制器将被取消分配,因此目标操作不再起作用.
当我启用Zombie Objects时,调试器在向控制器发送操作时写了这个:
*** - [StreamingViewController performSelector:withObject:withObject:]:消息发送到解除分配的实例0x914f0e0
我真的试图解决这个问题,但没有成功,所以非常感谢每一个帮助.
更多代码:
StreamingViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Streaming View Controller"];
[self.pageControllers addObject:controller]; // adding view controller to mutable array
controller.view.frame = self.scrollView.frame;
[self.scrollView addSubview:controller.view];
Run Code Online (Sandbox Code Playgroud)
如果您使用 ARC,当您不再拥有指向某些内容的有效指针时,通常情况下,某些内容会丢失。因此,在您的情况下,您的视图控制器超出范围并被释放。该视图仍然保留,因为它是由 持有的self.scrollView。将视图控制器添加到数组可以解决该问题,但前提是该数组已正确实例化。Poperties 不会自动实例化。使用该属性也不会为您实例化它,除非您重写访问器。由于 Cocoa 的性质,尝试将对象添加到 nil 属性时不会收到任何错误或消息,因为它是完全有效的代码。
检查如何创建 pageController,并确保 在使用它之前正确实例化它。
例如。self.pageControllers = [[NSMutableArray alloc] init];
| 归档时间: |
|
| 查看次数: |
1047 次 |
| 最近记录: |