我正在尝试使用循环添加许多UIView,每个UIView表示一个对象并包含从db查询返回的UIImage + UILabel到UIScrollview。每个UIView都有一个按钮,用于调用superview以切换到下一个UIViewController。但是,由于我在for循环中分配这些UIViews,因此内存似乎没有被保留,因此按下按钮总是会导致seg-fault。
由于我需要将存储在UIView中的UIImage和UILabel传递给我正在进行控制的控制器,这样做的最佳方法是什么?
这是我的代码:
家长观点:
//这是从for循环中调用的
IndividualObjectViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"smallObjectSubView"];
controller.delegate = self;
controller.view.frame = CGRectMake(105*column+5, 125*row+45, 100, 120);
[self.objectScrollView addSubview:controller.view];
对象视图:
我将IBAction完全留空以进行调试,但看起来只要我将此动作与故事板按钮连接,就会收到程序接收信号:EXEC_BAD_ACCESS错误。
答案 0 :(得分:0)
如果你不保留controller
,它将在当前通过运行循环结束时解除分配(即使你正在使用它的视图)。
您应该将所有IndividualObjectViewController
个实例存储在NSMutableArray
或NSMutableDictionary
中。这些容器会保留您存储在其中的对象。