【问题标题】:how to work with a class instance inside the viewController in Appdelegate?如何在 Appdelegate 的 viewController 中使用类实例?
【发布时间】:2014-07-20 06:00:56
【问题描述】:

我有一个类实例,它在我的 ViewController 中有方法。 是否可以在 appdelegate 中访问此实例和方法?

类似:

@implementation FirstViewController
@synthesize myObject;

- (void)viewDidLoad
{
    [super viewDidLoad];
    myObject = [[myObject alloc] initWithFrame:........];
    [self.view addSubview:myObject];
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [myObject doSomething];
}

我想在 AppDelegate 中调用相同的方法

- (void)applicationWillResignActive:(UIApplication *)application
{
    [myObject do Something];
}

有人出主意吗?

问候

【问题讨论】:

    标签: ios instance viewcontroller appdelegate


    【解决方案1】:

    你可以像这样从rootViewConroller获取控制器并调用它的功能

    - (void)applicationWillResignActive:(UIApplication *)application{ 
    
         UIViewController *controller = self.window.rootViewController;
    
         if([controller isKindOfClass:[UINavigationController class]]){
               FirstViewController *firstViewController;
    
                for (id vc in [((UINavigationController*)controller) viewControllers])
                 {
                     if ([vc isKindOfClass:[FirstViewController class]])
                     {
                         [((FirstViewController *) vc) doSomething];
                         break;
                     }
                 }
         }
         else if([controller isKindOfClass:[FirstViewController class]]){
                 [((FirstViewController *) controller) doSomething];
    
         }else{
            //Not found
         }
    }
    

    【讨论】:

    • 非常感谢您的帮助。有趣的解决方案!
    • 如果你知道你 rootViewControllerFirstViewController 比你可以跳过 if 部分只写 else 部分。但是这段代码将来不会中断
    • 欢迎您,如果它有效,而不是接受这个解决方案,它将帮助其他人
    猜你喜欢
    • 2014-08-29
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多