1

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

这是我的故事板:

在此处输入图像描述

OrangeUIView加载了来自UIViewControllers 的视图(带有 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
}
4

2 回答 2

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];

4-处理didSelectItemAtIndexPathDataViewController的改变你的看法。

于 2013-04-24T08:03:46.567 回答
0

像这样尝试它可以帮助您将子视图带到您想要的视图,

 [self.view bringSubviewToFront:view];
于 2013-04-23T12:03:49.953 回答