以编程方式更改子视图控制器

时间:2013-04-23 12:01:53

标签: ios objective-c cocoa-touch uicollectionview

我有一个3页的基于页面的应用程序,在每个页面上我都有UIView作为子视图,这个UIView是从UIViewController加载的。在最后一页上,我有UICollectionView包含不同的项目,当我触摸UICollectionCell时,我想更改子视图。

这是我的故事板:

enter image description here

橙色UIView加载了UIViewController s(带有xib文件)的视图

viewWillAppear:上的DataViewController.m

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.dataLabel.text = [self.dataObject description];

    if([self.dataLabel.text isEqualToString:@"View1"])
        [mainView addSubview: view1.view];
    else if([self.dataLabel.text isEqualToString:@"View2"])
        [mainView addSubview: view2.view];
    else if([self.dataLabel.text isEqualToString:@"View3"]){
        [mainView addSubview: view3.view];
    }
}

触摸UICollectionCell的方法:

- (void)collectionView:(UICollectionView *)collectionView
            didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
   // Change the view
}

2 个答案:

答案 0 :(得分:0)

尝试这样它可以帮助你带来想要的视图的子视图,

 [self.view bringSubviewToFront:view];

答案 1 :(得分:0)

您可以将UICollectionView上的事件委托给DataViewController,以便更轻松地处理这些事件。


1-识别带有标签的UICollectionView以便轻松检索:

//Supposed that your UICollectionView has been declared as an IBOutlet in your .h
yourCollectionView.tag = 1;

2-将<UICollectionViewDelegate>添加到DataViewController.h以处理UICollectionView个事件,

3-在您将UICollectionView代理人添加到DataViewController后立即mainView设置//Replace 1 with the NSInteger you chose [[[mainView subviews] lastObject] viewWithTag:1] setDelegate:self]; 代理人

didSelectItemAtIndexPath

4-处理DataViewController上的{{1}}以更改您的观点。