我有一个名为MainViewController的UIViewController 我有另一个名为LeftSharingViewController的UIViewController;
我想在我的LeftSharingViewController中使用MainViewController中的NSString
我有一个问题,我总是得到(null)而不是NSString想要的值。
这是我的代码以及NSString如何获得它的价值 MainViewController:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
leftWebViewString = [NSString stringWithString:leftWebView.request.URL.absoluteString];
}
LeftSharingViewController.h:
#import <UIKit/UIKit.h>
#import "MainViewController.h"
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
@class MainViewController;
@interface LeftSharingViewController : UIViewController <MFMailComposeViewControllerDelegate> {
MainViewController *mainViewController;
NSString *leftWebViewUrl;
}
@property (nonatomic, retain) MainViewController *mainViewController;
@property (nonatomic, retain) NSString *leftWebViewUrl;
@end
LeftSharingViewController.m:
#import "LeftSharingViewController.h"
#import "MainViewController.h"
@implementation LeftSharingViewController
@synthesize mainViewController;
@synthesize leftWebViewUrl;
- (void)viewWillAppear:(BOOL)animated {
self.leftWebViewUrl = self.mainViewController.leftWebViewString;
}
#pragma mark -
#pragma mark Compose Mail
-(void)displayComposerSheet
{
MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];
mailPicker.mailComposeDelegate = self;
[mailPicker setSubject:@"Check Out This Website!"];
[mailPicker setMessageBody:[NSString stringWithFormat:@"Take a look at this site:%@", leftWebViewUrl] isHTML:YES];
mailPicker.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:mailPicker animated:YES];
[mailPicker release];
}
谢谢!
答案 0 :(得分:0)
在MainViewController
上,您永远不会保留您创建的NSString
。您正在使用stringWithString:
,它返回一个自动释放的对象。
您应该保留它,或者(更容易)更改您的代码以使用您已经保留的访问者,如下所示:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
self.leftWebViewString = [NSString stringWithString:leftWebView.request.URL.absoluteString];
}
作为旁注,如果您从MainViewController
导航到LeftSharingViewController
,而不是从LeftSharingViewController
“拉”MainViewController
中的数据,我会这样做其他方式:
在MainViewController
中,在显示LeftSharingViewController
的视图之前,我会设置所需的属性。