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

Cocoa touch 在Xcode中从第二个视图控制器调用第一个视图控制器上的Void,cocoa-touch,Cocoa Touch,我正在使用Xcode 4.6.2,并使用Apple模板创建了一个新的选项卡式应用程序。我已将UIWebView放置在第一个视图控制器上并加载到其中。在第二个视图控制器上,我创建了一个按钮,按下该按钮后,将加载到第一个控制器上的Web视图中。这是我一直坚持的一点,这是我迄今为止的代码: FirstViewController.h #import <UIKit/UIKit.h> @interface FirstViewController : UIViewController {

我正在使用Xcode 4.6.2,并使用Apple模板创建了一个新的选项卡式应用程序。我已将UIWebView放置在第一个视图控制器上并加载到其中。在第二个视图控制器上,我创建了一个按钮,按下该按钮后,将加载到第一个控制器上的Web视图中。这是我一直坚持的一点,这是我迄今为止的代码:

FirstViewController.h

#import <UIKit/UIKit.h>  

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

-(void)imagesURL;  

@end
SecondViewController.h

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

@interface SecondViewController : UIViewController {

}

- (IBAction)imagesButton:(id)sender;

@end

此时,当我按下第二个视图控制器上的“图像”按钮并切换回第一个视图控制器时,什么也没有发生。该网页未加载。这就好像没有人在呼唤虚空。我做错了什么?

问题在这一行
FirstViewController*view1=[[FirstViewController alloc]init]-正在创建视图控制器的全新副本,而不是您在第一个选项卡中开始使用的副本

我想你会受益于一些客观的C教程,或者iTunes U上的一门iOS编程课程,这样如果类似的事情再次发生,你就会有更多的背景知识


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

您正在创建FirstViewController的新实例,并发送消息,而不是导航堆栈中现有的视图控制器。
#import <UIKit/UIKit.h>
#import "FirstViewController.h"

@interface SecondViewController : UIViewController {

}

- (IBAction)imagesButton:(id)sender;

@end
#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