Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将视图添加为子视图后更改视图属性_Ios_Iphone_Objective C_Uiview - Fatal编程技术网

Ios 将视图添加为子视图后更改视图属性

Ios 将视图添加为子视图后更改视图属性,ios,iphone,objective-c,uiview,Ios,Iphone,Objective C,Uiview,我正在创建我正在使用的应用程序。我有自定义视图(mainDetailV),以ImageView为背景,标签在顶部。我正在使用PagedFlowView委托方法初始化其中的所有视图: - (UIView *)flowView:(PagedFlowView *)flowView cellForPageAtIndex:(NSInteger)index{ mainDetailV = (MainDetailView *)[flowView dequeueReusableCell]; i

我正在创建我正在使用的应用程序。我有自定义视图(mainDetailV),以ImageView为背景,标签在顶部。我正在使用PagedFlowView委托方法初始化其中的所有视图:

- (UIView *)flowView:(PagedFlowView *)flowView cellForPageAtIndex:(NSInteger)index{

    mainDetailV = (MainDetailView *)[flowView dequeueReusableCell];

    if (!mainDetailV) {
        mainDetailV = [[[NSBundle mainBundle] loadNibNamed:@"MainDetailView"  owner:self    options:nil] lastObject];
        //mainDetailV.layer.cornerRadius = 6;
        mainDetailV.layer.masksToBounds = YES;
    }

    return mainDetailV;
}
它在pageFlowView中添加了5次我的视图

我想在点击imageView时触发一些动作,比如更改标签的alpha,但我真的不知道怎么做

我的主要问题是,在将此视图添加到pagedViewController后,如何更改其属性

类似问题

    • (除了我的评论)

      我已经研究了PagedFlowView委托,其中有一个方法

      - (void)flowView:(PagedFlowView *)flowView didTapPageAtIndex:(NSInteger)index;
      
      您可以使用整数索引从点击的流视图中获取单元格/页面。如果你有这个,你可以编辑它的属性


      希望这有帮助。

      mainDetailV的定义是什么?把这一套当作Ivar似乎很奇怪

      您应该将mainDetailV创建为本地变量,并在返回其值之前将其内容存储在可变数组中。因此:

      - (UIView *)flowView:(PagedFlowView *)flowView cellForPageAtIndex:(NSInteger)index{
      
          id mainDetailV = [flowView dequeueReusableCell];
      
          if (!mainDetailV) {
              mainDetailV = [[[NSBundle mainBundle] loadNibNamed:@"MainDetailView"  owner:self    options:nil] lastObject];
              //mainDetailV.layer.cornerRadius = 6;
              mainDetailV.layer.masksToBounds = YES;
          }
      
          [usedViewControllers insertObject:mainDetailV atIndex:index];
      
          return mainDetailV;
      }
      
      其中
      usedViewControllers
      是一个NSMutableArray实例变量

      然后您可以像这样使用委托方法:

      - (void)flowView:(PagedFlowView *)flowView didTapPageAtIndex:(NSInteger)index;
      {
          MainDetailView *view = (MainDetailView *)[usedViewControllers objectAtIndex:index];
      }
      

      如果要在用户与图像交互时更改属性,则必须在
      UIImageView
      上添加
      uigestureRecognitizer
      。这里是苹果文档的链接。请注意,
      UIImageView
      默认情况下禁用了用户交互,您必须启用它才能接收触摸。我从未使用过PagedFlowView。但我猜有一种委托方法,如“-(UIView*)flowView:(PagedFlowView*)flowView didTapOnCell”或类似的方法。在这种方法中,您应该能够访问单元格。如果没有,您还可以将手势识别器添加到单元格中,并将方法作为目标,您可以在其中访问手势的发送者。这是你的手机。是的,谢谢。但我实际想要的是更改mainDetailV的属性,而不是包含mainDetailView的单元格。在代码中,您将mainDetailV设置为单元格,因为在-(UIView*)flowView:(PagedFlowView*)flowView cellForPageAtIndex:(NSInteger)索引中返回一个单元格作为结果。因此,如果你访问你的单元格,你也可以访问你的viewWell,那么我需要将它的返回值更改为MainDetailView*以访问我的自定义视图的属性。不,只要mainDetailV是uiview的子类,你就不必这样做。但稍后,您将不得不强制转换要维护的单元格。您标记为正确的答案显示了该如何操作。