我有三个按钮和一个视图控制器。我想将三个按钮链接到这三个按钮 不同的观点(页面)。
我通过制作三个视图并将其存储在一个可变数组中来尝试这个。
ViewArray= [[NSMutableArray alloc]initWithCapacity:15];
CGRect viewRect = CGRectMake(10, 10, 100, 10);
//VIEW1
UIView* view1 = [[UIView alloc] initWithFrame:viewRect];
view1.backgroundColor = [UIColor redColor];
//VIEW2
UIView* view2 = [[UIView alloc] initWithFrame:viewRect];
view2.backgroundColor = [UIColor greenColor];
我以编程方式添加了三个按钮。之后,我使用了每个按钮的动作:
//action for each button
self.view = [ViewArray objectAtIndex:i];//where i={1,2,3} for different functions
但我没有得到我想要的东西。
答案 0 :(得分:0)
更好的设计是无形地添加所有视图,然后将其不透明度改为0.0-1.1以隐藏和显示。 (另外,OP中的一个关键错误是代码用子视图替换视图控制器视图,而不是添加它们)
CGRect viewRect = CGRectMake(10, 10, 100, 10);
//VIEW1
UIView* view1 = [[UIView alloc] initWithFrame:viewRect];
view1.backgroundColor = [UIColor redColor];
view1.tag = 1;
view1.alpha = 0.0;
[self.view addSubview:view1];
//VIEW2
UIView* view2 = [[UIView alloc] initWithFrame:viewRect];
view2.backgroundColor = [UIColor greenColor];
view1.tag = 2;
view1.alpha = 0.0;
[self.view addSubview:view2];
在vc的界面中添加一个跟踪可见视图的属性:
@property(nonatomic, weak) UIView *visibleSubview;
然后按钮动作:
UIView *subview = [self.view viewWithTag:i];
//where i={1,2,3} for different functions
// i really needs to be 1,2,3 here, to correspond to the tags
[UIView animateWithDuration:0.5 animations:^{
subview.alpha = 1.0;
self.visibleSubview.alpha = 0.0;
} completion:^(BOOL finished) {
self.visibleSubview = subview;
}];
答案 1 :(得分:0)
嗯,我不确定你想要什么。但一般情况下,如果你想访问任何更改多个对象,如UIView或UILabels等...你可以使用和NSArray和一个for循环来访问和进行所有更改,而不需要任何额外的代码副本,如下所示:
首先,使用所有对象设置NSArray,如下所示:
NSArray *_viewArray = @[view1, view2]; //etc....
还设置了一个包含不同UIColors的数组,如下所示:
NSArray *_colourArray = @[[UIColor redColor], [UIColor greenColor]]; //etc....
然后当你想访问它们并编辑多个UIViews或者任何对象时,你可以像这样使用for循环:
for (int loop = 0; loop < ([_viewArray count] - 1); loop++) {
((UIView*)_viewArray[loop]).backgroundColor = ((UIColor*)_colourArray[loop]);
}
我希望这可以帮助你:)