AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
由于AppDelegate没有实现applicationWillBecomeActive:等方法,我如何将文件转换为UIViewController文件?我需要在上面的代码中更改以调用控制器而不是代理(我的AppDelegate将保持不变).
这就是我所做的(代码需要包含Facebook API).转到下载选项卡,下载Archive.zip和AppDelegate.zip:https://github.com/Alexmitico45/FacebookRequests/downloads
基本上,控制器ContactFBSViewController链接到故事板中的viewcontroller.
解决方法
AppDelegate类与其他类没有任何不同.它与众不同之处在于它实现了UIApplicationDelegate,并在main.m中明确引用,作为应用程序的启动类.
如果你想将它转换成另一个类,我会:
>重命名类(.h,.m,接口和实现名称),然后将其放入项目中.
>在NewName.h中,删除顶部的UIApplicationDelegate实现.
>在NewName.m中,您希望查看UIApplication方法部分中的任何功能,因为该功能专门分配给AppDelegate类执行,并查看是否需要将其合并到现有的AppDelegate类中.然后从NewName.m中删除那些UIApplicationDelegate方法,因为它们只能在您实现UIApplicationDelegate时存在.
由于ViewController利用了其预期的AppDelegate是UIApplication层次结构中的长期类的事实,因此您需要复制该行为.这可能是通过在ViewController.h中创建一个引用NewName的新弱属性来实现的:
ViewController.h
@class NewName; @property (nonatomic,weak) NewName *newNameDelegate;
ViewController.m
#import "NewName.h" ... @implementation ViewController @synthesize newNameDelegate; ... - (IBAction)sendRequestButtonAction:(id)sender { if (FBSession.activeSession.isOpen) { [newNameDelegate sendRequest]; } }
NewName.m
... self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.viewController.newNameDelegate = self; ...
希望这能让您了解从哪里开始.