我在从另一个类获取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错误。
但是,如果在主线程中显式处理调用,则应用程序不会崩溃,但视图不会绘制。
我认为这是在尝试将按钮作为子视图添加到图像时发生的事情。
答案 0 :(得分:0)
更改
UIButton *button = [[UIButton alloc] init];
到
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];