代码之家  ›  专栏  ›  技术社区  ›  user278859

如何将子视图的委托设置为超级视图控制器

  •  0
  • user278859  · 技术社区  · 15 年前

    在IB中,我在UIScrollView中创建了UIView。这两个文件的所有者都是名为JLViewController的UIViewController。UIView与班级的生物钟相连。

    //Code in BodyClock
    //create the hot spot
      id viewController = [self nextResponder];
      HelpHotSpot *helpHotSpot = [[HelpHotSpot alloc] initWithFrame:CGRectMake(start_x, melatoninHeightEnd_y, 80, 40)]; 
      helpHotSpot.delegate = viewController;
      [viewController addSubview:helpHotSpot];
      [helpHotSpot release];
    
    //Code in the HotSpot after touch and request for more info
    //notify JLViewController to display the details
      if ([self.delegate respondsToSelector:@selector(hotSpotMore:)]) {
         [self.delegate hotSpotMore:itemDetails];
      }
    

    除了respondsToSelector失败之外,一切正常。如果我NSLog viewController或self.delegate得到。。。

    界面视图:0x7443c20;框架等。。。

    如何为这些子视图将委托设置为ViewController?

    是可能的,还是我应该用通知代替?

    1 回复  |  直到 15 年前
        1
  •  0
  •   No one in particular    15 年前

    这:

    id viewController = [self nextResponder];
    

    不是你想的那样。这不会得到视图的控制器,而是查看响应者链并确定下一个响应事件的控制器-这些通常是视图或控件(不要与控制器混淆)。似乎在您的热点视图之后,scoll视图是下一个。

    IBOutlet JLViewController *viewController;
    

    在界面生成器中,将其连接到视图控制器。