我对 Objective C 和 Xcode 很陌生,可能只是做一些愚蠢的错误,但我尝试了很多不同的建议,但无法让它们发挥作用。
简而言之,当在不同的 UIViewController 中按下按钮时,我想在现有的 UIViewController 上调用一个方法。
(有点背景:两个屏幕是一个主屏幕和一个菜单屏幕。用户向上滑动以查看菜单,然后当按下完成按钮时,我希望菜单屏幕发送一个字符串变量(在这种情况下为 URL)到主屏幕中的方法,然后主屏幕在 UIWebView 中显示 URL)。
我尝试将方法/URL 变量放在 AppDelegate/MainViewController 中并合成它们。我还尝试使 MenuViewController 成为 MainViewCONtroller 的子类,并使用 [super readFile:url] 调用该方法,该方法确实编译但我认为它没有调用现有的 MainViewController 对象,因为 webview 没有出现。
我将在下面粘贴我的代码的相关位:(感谢您的帮助!)
主视图控制器.h
#import <UIKit/UIKit.h>
@interface MainViewController : UIViewController {
IBOutlet UIWebView *vCodeView;
}
- (void)readFile:(NSString *)newURL;
@end
主视图控制器.m
#import "MainViewController.h"
#import "MenuViewController.h"
@interface MainViewController ()
@end
@implementation MainViewController
- (void)readFile:(NSString *)newURL {
vCodeView.hidden = NO;
// seperate url by full stops
NSArray *splitURL = [newURL componentsSeparatedByString:@"."];
// find extension of file
NSString *extension = [splitURL objectAtIndex:([splitURL count]-1)];
// DO SOME OTHER STUFF WITH URL THEN DISPLAY CONTENT IN UIWEBVIEW
}
- (void)swipeUpRecognised {
MenuViewController *menuView = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
menuView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:menuView animated:YES completion:nil];
}
菜单视图控制器.h
#import <UIKit/UIKit.h>
#import "MainViewController.h"
@interface MenuViewController : UIViewController {
IBOutlet UIBarButtonItem *bDone;
IBOutlet UITextField *fUser;
IBOutlet UITextField *fPass;
IBOutlet UITextField *fAddress;
IBOutlet UITextField *fAutoConnectAddress;
}
- (IBAction)bDonePressed;
@end
菜单视图控制器.m
#import "MenuViewController.h"
#import "MainViewController.h"
@interface MenuViewController ()
@end
@implementation MenuViewController
- (IBAction)bDonePressed {
NSString *user = @"admin";
NSString *pass = @"password";
NSString *path = @"54.246.90.95/repos/project1/trunk/dir1/test.c";
// url of file
NSArray *pathArray = [[NSArray alloc] initWithObjects:@"http://", user, @":", pass, @"@", path, nil];
NSString *url = [pathArray componentsJoinedByString:@""];
//call the method here passing in url
[self dismissViewControllerAnimated:YES completion:nil];
}