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



如何在我的应用程序中获取对某些视图控制器的引用?,我不需要视图控制器 我只需要对该控制器的引用,以便我可以使用其方法并更新其属性。

谢谢

两者之间有父子关系吗?

如果是这样,您可以执行以下操作

@interface ChildVC : UIViewController
@property (nonatomic, assign) ParentVC *parent;
@end

ParentVC

- (void)methodThatShowsOrCreatesChildVC
{
    // ...
    ChildVC *childVC = [[ChildVC alloc] init];
    childVC.parent = self;
    // ...
}

ChildVC

- (void)methodThatChangesSomethingOnParent
{
    [[self parent] changeSomethingOnParent:something];
}

如果没有父子关系,这听起来像是不必要的耦合。与其这样,不如尝试:

  • 发布有关所做更改NSNotification
  • 具有包含共享"关注点"的基于 NSObject 的共享类。

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

当您使用

performSegueWithIdentifier:

您将获得委托方法

prepareForSegue:

它传递具有属性destinationViewControllersourceViewControllerUIStoryBoardSegue

从这个答案:

- (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];
    }
}

如果您使用的是 UINavigationController ,则可以执行此操作以获取任何索引处的View Controller

UIViewController *targetViewController = [self.navigationController.viewControllers objectAtIndex:([self.navigationController.viewControllers count]-1)];

最新更新