Проблема с NSString, равным (null) - PullRequest
0 голосов
/ 15 июня 2010

У меня есть UIViewController с именем MainViewController У меня есть еще один UIViewController с именем LeftSharingViewController;

Я хотел бы получить и использовать NSString из MainViewController в моем LeftSharingViewController

У меня проблема, я всегда получаю(ноль) вместо искомого значения 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];

}

Спасибо!

1 Ответ

0 голосов
/ 15 июня 2010

На вашем MainViewController вы никогда не сохраните созданное вами NSString. Вы используете stringWithString:, который возвращает автоматически освобожденный объект.

Вы должны либо сохранить его, либо (проще) изменить свой код, чтобы использовать свой метод доступа, который уже сохраняет, например:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    self.leftWebViewString = [NSString stringWithString:leftWebView.request.URL.absoluteString];
}

В качестве примечания: если вы переходите от MainViewController к LeftSharingViewController, а не "извлекаете" данные в LeftSharingViewController из MainViewController, я бы сделал это наоборот: В MainViewController, перед отображением вида LeftSharingViewController, я бы установил необходимые свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...