加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xcode – 从chid UIView访问父视图

发布时间:2020-12-14 19:13:18 所属栏目:百科 来源:网络整理
导读:我有一个带有xib的UIViewController并使用Interface Builder我添加了一个子UIView. 在子UIView中,当我点击该视图中的一个对象时,我希望能够改变整个窗口的标题. 现在我通常会做那个设置 self.title = @"hi"; 在父UIViewController上.但有什么方法可以从孩子
我有一个带有xib的UIViewController并使用Interface Builder我添加了一个子UIView.
在子UIView中,当我点击该视图中的一个对象时,我希望能够改变整个窗口的标题.

现在我通常会做那个设置

self.title = @"hi";

在父UIViewController上.但有什么方法可以从孩子内部访问父母标题?

我试过了

self.superview.title = @"i";
self.parentViewController.title = @"hi";

但都没有工作.
任何帮助非常感谢

谢谢

解决方法

self.superview.title = @“i”;求值为UIView类型的对象,UIView没有title属性. UIViewControllers有一个parentViewController属性,但UIViews没有.

因此,根本问题在于您没有正确地分离控制器和视图类.你通常做的是让你想要捕获UIControl的子类的视图(像UIButton这样的东西,但是如果它是一个自定义的UIView子类,那么你可以将它改成UIControl子类,因为UIControl本身是一个UIView的子类),然后在你的控制器中添加如下内容:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // we'll want to know if the view we care about is tapped;
    // we've probably set up an IBOutlet to it but any way of
    // getting to it is fine
    [interestingView
               addTarget:self
               action:@selector(viewTapped:)
               forControlEvents:UIControlEventTouchDown];

     // UIButtons use UIControlEventTouchUpInside rather than
     // touch down if wired up in the interface builder. Pick
     // one based on the sort of interaction you want
}

// so now this is exactly like an IBAction
- (void)viewTapped:(id)sender
{
    self.title = @"My new title";
}

因此,您明确不要将视图投入任何有关其在视图层次结构中的位置或视图控制器打算如何操作的知识.如果它收到用户交互,你只是告诉它给你一个喊叫.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读