首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从另一个视图控制器访问视图控制器?

如何从另一个视图控制器访问视图控制器?
EN

Stack Overflow用户
提问于 2014-02-25 01:08:22
回答 4查看 85关注 0票数 0

如何在我的应用程序中获得对某个视图控制器的引用?我不需要一个新的视图控制器副本,我只需要一个对该控制器的引用,这样我就可以使用它的方法并更新它的属性。

谢谢

EN

回答 4

Stack Overflow用户

发布于 2014-02-25 01:18:33

两者之间是否存在亲子关系?

如果是这样的话,您可能会这样做

代码语言:javascript
运行
复制
@interface ChildVC : UIViewController

@property (nonatomic, assign) ParentVC *parent;

@end

ParentVC

代码语言:javascript
运行
复制
- (void)methodThatShowsOrCreatesChildVC
{
    // ...
    ChildVC *childVC = [[ChildVC alloc] init];
    childVC.parent = self;
    // ...
}

ChildVC

代码语言:javascript
运行
复制
- (void)methodThatChangesSomethingOnParent
{
    [[self parent] changeSomethingOnParent:something];
}

如果没有父子关系,这听起来就像是不必要的耦合。而不是这样,你可以尝试:

  • 发布了一条NSNotification,关于
  • 有一个包含共享“问题”的共享NSObject-based类的更改。
票数 1
EN

Stack Overflow用户

发布于 2014-02-25 01:15:17

这取决于您的实现,如果viewController可见或在内存中,您可以在其他类中访问它,方法是创建一个属性,然后访问它的属性(属性,方法)。

票数 0
EN

Stack Overflow用户

发布于 2014-02-25 01:24:28

推送新的视图控制器时

代码语言:javascript
运行
复制
performSegueWithIdentifier:

您将获得委托方法

代码语言:javascript
运行
复制
prepareForSegue:

它传递一个具有destinationViewControllersourceViewController属性的UIStoryBoardSegue

from this answer

代码语言:javascript
运行
复制
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"segueName"])
    {
        YourViewController *vc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [vc setMyObjectHere:object];
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21994240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档