【问题标题】:Accessing parent view of current view - iOS访问当前视图的父视图 - iOS
【发布时间】:2011-06-16 08:08:53
【问题描述】:

当我想访问当前UIView 的父UIView 时,我在当前UIView 中声明父UIView 的对象,并通过将父UIView 对象分配给当前视图的对象属性来访问它。

有什么办法可以摆脱这个,直接调用父视图的方法或属性?

我也尝试了(parentView *) self.view.superview,但没有帮助。

调用此对象的函数时出错

[UIVIew unrecognized selector......

【问题讨论】:

    标签: ios objective-c uiview superview


    【解决方案1】:

    我能想到的是你想从你的视图中调用视图控制器的方法,你添加到视图控制器的视图中。

    现在您有两个选择,您可以将视图控制器设置为视图的委托,然后通过 [delegate performSelector:] 方法调用视图控制器的方法。

    另一种方法是访问视图的超级视图,然后获取它的控制器。你不能直接这样做,因为如果你能这样做,它会破坏 MVC 的整个目的。

    但是,还是有出路的,给你:-

    Get to UIViewController from UIView?

    希望这对您有所帮助。

    【讨论】:

      【解决方案2】:

      @ Naveed:这是您可以用于任何视图的通用代码,无论是父视图还是子视图,只需更改您想要按下的按钮名称和您想要进入的视图名称。例如在后退按钮上按下你想去图书馆视图然后写这个代码 -

      -(IBAction)backButtonPressed:(id) sender
       {
              llibraryView *libraryview=[[libraryView alloc] initWithNibName:nil bundle:nil];
          libraryview.modalTransitionStyle=UIModalTransitionStyleCoverVertical;
          [self presentModalViewController:libraryview animated:YES]; 
          [libraryview release];
       }
      

      让我知道你的问题是否解决了。

      【讨论】:

      • 非常感谢您对 Archana 的帮助。实际上我的问题是我不想查看名称。我想让它动态化。谢谢。
      【解决方案3】:

      如果您直接从UIView(而不是UIViewController)调用它,它应该是self.superview 而不是self.view.superview

      【讨论】:

      • 它是 UIViewController。但我想它也不应该对 UIView 起作用,因为对象是相同的,都是 UIView
      • 请注意,这在 ViewDidLoad 中返回 nil。只有在 viewDidAppear 中和之后才可用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 2012-06-20
      • 2012-07-21
      相关资源
      最近更新 更多