如何添加许多UIViews(每个都有一个按钮)作为UIScrollview的子视图

时间:2012-02-25 22:03:41

标签: objective-c ios uiview uiscrollview

我正在尝试使用循环添加许多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)objectButton:(id)sender { }

我将IBAction完全留空以进行调试,但看起来只要我将此动作与故事板按钮连接,就会收到程序接收信号:EXEC_BAD_ACCESS错误。

1 个答案:

答案 0 :(得分:0)

如果你不保留controller,它将在当前通过运行循环结束时解除分配(即使你正在使用它的视图)。

您应该将所有IndividualObjectViewController个实例存储在NSMutableArrayNSMutableDictionary中。这些容器会保留您存储在其中的对象。