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

时间:2014-02-24 17:08:22

标签: ios iphone objective-c uiviewcontroller

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

感谢

4 个答案:

答案 0 :(得分:1)

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

如果是这样,您可能会执行类似

的操作
@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的共享类,其中包含共享的“关注点”。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用

推送新视图控制器时
performSegueWithIdentifier:

您将获得委托方法

prepareForSegue:

通过具有属性UIStoryBoardSeguedestinationViewController

sourceViewController

from this answer

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

答案 3 :(得分:0)

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

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