在Xcode中从第二视图控制器调用第一视图控制器上的Void

时间:2013-06-13 20:13:23

标签: cocoa-touch

我仍然对Xcode很新,所以对我很陌生。我正在使用Xcode 4.6.2并使用apples模板创建了一个新的选项卡式应用程序。我在我的First View Controller上放置了一个UIWebView并将http://google.co.uk加载到其中。在我的第二个视图控制器上,我创建了一个按钮,当按下该按钮时,会将http://google.co.uk/images加载到第一个控制器上的Web视图中。这是我坚持的,这是我的代码到目前为止:

FirstViewController.h

#import <UIKit/UIKit.h>  

@interface FirstViewController : UIViewController {  
    IBOutlet UIWebView *mainWebView;  
}  

-(void)imagesURL;  

@end

FirstViewController.m

#import "FirstViewController.h"

@interface FirstViewController ()

@end

@implementation FirstViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = NSLocalizedString(@"First", @"First");
        self.tabBarItem.image = [UIImage imageNamed:@"first"];
    }
    return self;
}

- (void)viewDidLoad
{
    [mainWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.co.uk"]]];

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)imagesURL {
    [mainWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.co.uk/images"]]];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

SecondViewController.h

#import <UIKit/UIKit.h>
#import "FirstViewController.h"

@interface SecondViewController : UIViewController {

}

- (IBAction)imagesButton:(id)sender;

@end

SecondViewController.m

#import "SecondViewController.h"
#import "FirstViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = NSLocalizedString(@"Second", @"Second");
        self.tabBarItem.image = [UIImage imageNamed:@"second"];
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)imagesButton:(id)sender {
    FirstViewController *view1 = [[FirstViewController alloc] init];
    [view1 imagesURL];
}
@end

此刻,当我按下第二视图控制器上的图像按钮并切换回第一个时,根本没有任何反应。网页无法加载。就像Void没有被称为。我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题出在这一行FirstViewController *view1 = [[FirstViewController alloc] init]; - 这是创建一个全新的视图控制器副本,而不是你在第一个标签中开始的那个副本。

我认为你会受益于一些Objective C教程,或者也许是iTunes U上的一个iOS编程课程,这样如果再次发生这样的事情,你会有更多的背景。

有很多方法可以做你想要做的事情,但最简单的方法之一就是让你的第二个视图控制器与标签视图控制器对话,显示它以获得第一个视图控制器。在iOS UITabViewController文档中应该有关于如何执行此操作的合理文档。