【发布时间】:2014-12-06 09:46:13
【问题描述】:
我困惑了很久。假设我有一个视图控制器,当我点击某个按钮时,当前视图切换到另一个视图,我可以在情节提要的一个视图控制器中配置不同视图的布局吗?或者是否有一种标准方法可以在一个视图控制器中处理多个视图?非常感谢您的回复!
【问题讨论】:
标签: ios views viewcontroller
我困惑了很久。假设我有一个视图控制器,当我点击某个按钮时,当前视图切换到另一个视图,我可以在情节提要的一个视图控制器中配置不同视图的布局吗?或者是否有一种标准方法可以在一个视图控制器中处理多个视图?非常感谢您的回复!
【问题讨论】:
标签: ios views viewcontroller
假设您的意思是 UIView 而不是 UIViewController(这需要使用 ContainerView),那么您可以像这样使用视图 .hidden 属性:
func switchViews ()
{
if view1.hidden == true && view2.hidden == false
{
view1.hidden = false
view2.hidden = true
}
else
{
view1.hidden = true
view2.hidden = false
}
}
您只需像往常一样配置视图
【讨论】:
这是一段代码:-
//You need to create a array of view's which you want to show along with a unique tag value:-
UIView *view1 = [[UIView alloc] init];
view1.tag = 1;
UIView *view2 = [[UIView alloc] init];
view2.tag = 2;
UIView *view3 = [[UIView alloc] init];
view3.tag = 3;
NSArray *viewArray = [[NSArray alloc] initWithObjects:view1,view2,view3, nil];
//In below method, you could pass the tag value of view which you want to show as argument.
- (void)addSubviewWithTag:(NSInteger)tag {
for (int i=0;i <viewArray.count;i++){ //This loop will check and remove all view from self(parent view) which are not be to present or added.
if([viewArray objectAtIndex:i].tag != tag){
[[viewArray objectAtIndex:i] removeFromSuperview];
}
else{
[self.view addSubview:[viewArray objectAtIndex:i]]; //The one which match's will be added as subview to self(parent view)
}
}
}
【讨论】:
我建议您阅读 Apple 标准布局指南。
1) 您可以使用UIScrollView 来管理其中的子视图。并将滚动视图添加到您的视图控制器
2) UITableView 和 UICollectionView 在您想要管理复杂视图时都比其他人更好。像删除、重新排序和处理子视图事件。在这里您可以获取单元格的索引和后续子视图的详细信息
【讨论】: