UIViewcontroller中的AppDelegate功能

时间:2012-11-12 18:52:57

标签: ios xcode

我有一个viewcontroller,它有代码来实现Facebook窗口。问题是要运行代码,我需要这个url:

- (BOOL)application:(UIApplication *)application
 openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// attempt to extract a token from the url
 self.openedURL = url;
// attempt to extract a token from the url
 return [FBSession.activeSession handleOpenURL:url];       
 }

...正如我所知,它只能在app委托中运行,但我需要它来获取url。如果我只是将它添加到委托中,则不会调用它,并且我不知道它何时被调用以及如何调用。任何建议??

2 个答案:

答案 0 :(得分:1)

如果您需要在另一个类中使用app delegate的属性,您可以在视图控制器类中使用以下代码(假设您的app delegate类的名称是AppDelegate):

NSURL *theURL = [(AppDelegate *)[[UIApplication shardApplication]delegate] openedURL];

我在这里假设您希望将此URL传递给您的控制器。您还需要将AppDelegate.h文件导入控制器。

答案 1 :(得分:0)

如果您需要查看url,可以使用全局变量来存储此函数并稍后使用它,让我们假设您有一个名为appData的单例声明一个静态变量

.h文件

+(appData*)sharedAppData;
@property (nonatomic,retain) nsurl * myUrl;
<。>文件中的

static appData* = nil;

 initFunction {

      if(! appData) {  appData = [[appData alloc] init];}
  }

 +(appData*)sharedAppData{
  return appData;
  }
init函数中的

初始化此对象,因此在系统中的任何位置都可以通过

访问此数据

appData * data = [appData sharedData]; data.myurl = .... nslog(@“my url%@”,data.url);