在我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方法之外的这些变量? 我是个新手...帮助将这么多的赞赏
让他们一个实例变量 ,而不是一个局部变量你使用的方法。 在此之后,你可以从同一类的所有方法访问它们。
例:
@interface MyClass: NSObject {
NSString *currentURL;
// etc.
}
- (void)viewDidLoad
{
currentURL = self.URL.absoluteString;
// etc. same from other methods
}
在你的类中“全局变量”(如你说的标签)方面在其中定义viewDidLoad中创建它们的实例变量。
在你之类的.H
@interface MyViewController : UIViewController
{
NSArray *docName;
NSString *pdfName;
...
}
在您的@interface
(在.h
文件)包括如下:
@property (nonatomic, strong) NSString *currentURL;
// the same for the rest of your variables.
现在,你就可以通过调用来访问这些属性self.currentURL
。 如果这是一个新的项目,ARC已打开,您不必对自己管理内存打扰。
让他们的实例变量作为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...
}