从标签栏应用程序中的视图控制器读取委托

时间:2011-11-12 06:26:05

标签: iphone uitabbarcontroller uiapplicationdelegate

我在网上发现了几条帖子,说明我可以通过以下调用从任何视图控制器访问我的应用程序委托对象:

[[UIApplication sharedApplicaton] delegate];

(例如:data between Views UIApplicationiOS - Calling App Delegate method from ViewController

但是,只要我在一个视图控制器的函数中包含此行,应用程序就会崩溃。

这是我正在编写的第一个应用程序,我无法看到我的代码与其他帖子之间的区别,我应该使用此sharedApplication调用。为了完整起见,以下是我的应用程序委托和视图控制器的摘录。

FirstViewController.h:

@class wStreamAppDelegate;
#define URL_ADDRESS @"http://google.com"

@interface FirstViewController : UIViewController <UIWebViewDelegate>{
    IBOutlet UIWebView  * webView;
wStreamAppDelegate* appDelegate;
}

@property(nonatomic,retain) wStreamAppDelegate* appDelegate;
@property(nonatomic,retain) IBOutlet UIWebView* webView;

FirstViewController.m:

#import "FirstViewController.h"
#import "wStreamAppDelegate.h"

@implementation FirstViewController
@synthesize webView,appDelegate;
@class wStreamAppDelegate;

- (void)viewDidLoad {
    [super viewDidLoad];
NSString* urlAddress = URL_ADDRESS;
NSURL* url = [NSURL URLWithString:urlAddress];
NSURLRequest * requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];

    self.appDelegate = (wStreamAppDelegate*)[[UIApplication sharedApplicaton] delegate];

    //This doesn't work either
    //  wStreamAppDelegate *appDelegate= (wStreamAppDelegate*)[[UIApplication sharedApplicaton] delegate];

wStreamAppDelegate.h:

@interface wStreamAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
   UIWindow *window;
   UITabBarController *tabBarController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

@end

如果有人对可能出现的问题有任何想法,对于调试这些问题的一般建议或提示,我真的很感激。感谢。

1 个答案:

答案 0 :(得分:0)

错别字迟早会让所有人...在这种情况下,你写了“sharedApplicaton”而不是“sharedApplication”。