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

iphone – Xcode:视图控制器和App Delegate之间的连接

发布时间:2020-12-15 01:49:39 所属栏目:百科 来源:网络整理
导读:这可能是一个noob问题,但无法理解它. 如何在2个viewcontrollers或视图控制器和我的appdelegate之间建立连接? 我通常做的是将以下内容添加到我的应用程序委托“h”文件中 @class RootViewController;@interface TabBarWithSplitViewAppDelegate : NSObject U
这可能是一个noob问题,但无法理解它.

如何在2个viewcontrollers或视图控制器和我的appdelegate之间建立连接?
我通常做的是将以下内容添加到我的应用程序委托“h”文件中

@class RootViewController;


@interface TabBarWithSplitViewAppDelegate : NSObject <UIApplicationDelegate,UITabBarControllerDelegate> {
    RootViewController *rootViewController;



}
@property (nonatomic,retain) IBOutlet RootViewController *rootViewController;

@end

然后在Interface Builder中创建一个连接.从我的根视图控制器到应用程序委托,并自动告诉我这是我上面添加的rootViewController.

如果你在app委托“m”文件上执行此操作:

#import "RootViewController.h"

NSLOG(@"Controller %@",rootViewController);

它会给你一堆数字,表明有连接

但正如您所知,xcode 4已经发生了变化,因为您通常不再拥有可以创建连接的main.xib,而是以编程方式执行几乎所有这些连接.

我已尝试使用相同的代码而不使用“IBOutlet”添加:

rootViewController = [[RootViewController]alloc] init;

但似乎没什么用.

任何人都可以帮忙吗?

提前致谢

解决方法

您基本上想要在应用程序委托中创建视图控制器的ivar.

ViewController *myVC;
@property (nonatomic,retain) IBOutlet ViewController *myVC;

然后在实现文件中合成它.

然后当视图控制器加载时,调用以下内容:

- (void)viewDidLoad {
    AppDelegateClass *appDelegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
    appDelegate.myVC = self;
}

此时,您现在可以从应用程序委托直接连接到视图控制器.同样,您可以执行相反的操作从视图控制器调用应用程序委托方法.在这种情况下,您将在视图控制器的标题中设置一个委托.

id delegate;
@property (nonatomic,assign) id delegate;

再次在实现文件中合成它.

现在当你在viewDidLoad中时,你会调用这样的东西:

- (void)viewDidLoad {
    self.delegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
}

这应该会给你你需要的东西,所以我希望有所帮助

(编辑:李大同)

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

    推荐文章
      热点阅读