0

在我的viewDidLoad方法中,我设置了以下变量:

// Get requested URL and set to variable currentURL
NSString *currentURL = self.URL.absoluteString;
//NSString *currentURL = mainWebView.request.URL.absoluteString;
NSLog(@"Current url:%@", currentURL);

//Get PDF file name
NSArray *urlArray = [currentURL componentsSeparatedByString:@"/"];
NSString *fullDocumentName = [urlArray lastObject];
NSLog(@"Full doc name:%@", fullDocumentName);

//Get PDF file name without ".pdf"
NSArray *docName = [fullDocumentName componentsSeparatedByString:@"."];
NSString *pdfName = [docName objectAtIndex:0];

我希望能够在另一种方法中使用这些变量(即- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

如何在 viewDidLoad 方法之外重用这些变量?我是新手...非常感谢您的帮助

4

4 回答 4

7

使它们成为实例变量,而不是您正在使用的方法的局部变量。之后,您可以从同一类的所有方法访问它们。

例子:

@interface MyClass: NSObject {
    NSString *currentURL;
    // etc.
}

- (void)viewDidLoad
{
    currentURL = self.URL.absoluteString;
    // etc. same from other methods
}
于 2012-08-28T19:40:45.763 回答
1

就定义 viewDidLoad 的类中的“全局变量”(如您标记的那样)而言,将它们创建为实例变量。

在你班级的 .h 中

@interface MyViewController : UIViewController 
{
    NSArray *docName;
    NSString *pdfName;
    ...
}
于 2012-08-28T19:41:12.753 回答
1

在您的@interface(在.h文件中)包括以下内容:

@property (nonatomic, strong) NSString *currentURL;
// the same for the rest of your variables.

现在您可以通过调用来访问这些属性self.currentURL。如果这是一个较新的项目并且 ARC 已打开,则您不必费心自己管理内存。

于 2012-08-28T19:44:23.483 回答
1

正如 H2CO3 所建议的那样,使它们成为实例变量。您也可以在 actionSheet:clickedButtonAtIndex 函数本身中派生所有变量。

我注意到所有必需的变量都是从 self.URL.absoluteString 派生的。因此,移动您的所有代码应该没有问题,因为 self.URL 是您的实例变量,它包含您想要的内容。

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
// Get requested URL and set to variable currentURL
NSString *currentURL = self.URL.absoluteString;
//NSString *currentURL = mainWebView.request.URL.absoluteString;
NSLog(@"Current url:%@", currentURL);

//Get PDF file name
NSArray *urlArray = [currentURL componentsSeparatedByString:@"/"];
NSString *fullDocumentName = [urlArray lastObject];
NSLog(@"Full doc name:%@", fullDocumentName);

//Get PDF file name without ".pdf"
NSArray *docName = [fullDocumentName componentsSeparatedByString:@"."];
NSString *pdfName = [docName objectAtIndex:0];

// Do what you need now...
}
于 2012-08-28T19:44:55.407 回答