获取数据后,如何从NSObject类加载或更新视图?

时间:2015-06-09 14:25:35

标签: ios objective-c uiscrollview uiimageview addsubview

我在从另一个类获取CGPoint数据后,更新我的UIImageView以包含按钮的子视图时遇到了一些麻烦。 在我的主VC中,我将ImageView设置为UIScrollView的子视图,UIScrollView是主ViewControllers视图的子视图。

在viewDidLoad中,我从NSObject类调用一个方法来获取数据库中所有按钮位置的数据:

- (void)parseCoordinateData:(NSArray*)data {
    NSLog(@"Processing Data");

    mapVC = [[ViewController alloc]init];

    for(NSArray *table in data) {
        NSLog(@"Table: %@", table);

        float xValue = [[NSString stringWithFormat:@"%@", [table[0]objectForKey:@"LocationX"]] floatValue];
        float yValue = [[NSString stringWithFormat:@"%@", [table[0]objectForKey:@"LocationY"]] floatValue];

        NSLog(@"Coordinates: (%f,%f)", xValue, yValue);

        CGPoint buttonCoordinate = CGPointMake(xValue, yValue);

        [mapVC placeButtonsFromDatabaseWithCoordinates:buttonCoordinate];

   }
}

在我放置按钮的主VC的方法中:

- (void)placeButtonsFromDatabaseWithCoordinates:(CGPoint)point {

    NSLog(@"Placing Button at point: %@", NSStringFromCGPoint(point));

    UIButton *button = [[UIButton alloc] init];

    [self.imageView addSubview:button];

    button.frame = (CGRect){.origin = point, .size = CGSizeMake(20.0, 20.0)};
    button.backgroundColor = [UIColor greenColor];
    button.layer.cornerRadius = 10;
    button.clipsToBounds = YES;
    button.userInteractionEnabled = YES;
    [self animateButton:button];

    [self.imageView bringSubviewToFront:button];  
    }

但按钮没有出现在图像视图中。 知道如何让这个工作吗?

修改

我创建了一个非常小的项目来尝试复制这个问题。我创建了一个视图控制器,它调用NSObject类,该类将回调到View Controller以绘制子视图。尝试此操作时,我收到了EXC BAD ACCESS错误。

但是,如果在主线程中显式处理调用,则应用程序不会崩溃,但视图不会绘制。

我认为这是在尝试将按钮作为子视图添加到图像时发生的事情。

1 个答案:

答案 0 :(得分:0)

更改

UIButton *button = [[UIButton alloc] init]; 

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];