0

私は Xcode 4.6.2 を使用しており、apples テンプレートを使用して新しいタブ付きアプリケーションを作成しました。最初のビュー コントローラーに UIWebView を配置し、http://google.co.ukをロードしました。2 番目のビュー コントローラーで、ボタンを作成しました。このボタンを押すと、 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

現在、Second View Controller の [Images] ボタンを押して最初の View Controller に切り替えても、何も起こりません。Web ページが読み込まれません。Void が呼び出されていないようです。私は何を間違っていますか?

4

1 に答える 1

0

問題はこの行にFirstViewController *view1 = [[FirstViewController alloc] init];あります。これは、最初のタブで開始したものではない、View Controller のまったく新しいコピーを作成することです。

Objective C のチュートリアルや、iTunes U の iOS プログラミング コースの 1 つに従うことで、このようなことが再び発生した場合に背景知識を深めることができると思います。

やろうとしていることを実行するには多くの方法がありますが、最も簡単な方法の 1 つは、2 番目のビュー コントローラーが表示されているタブ ビュー コントローラーと通信して、最初のビュー コントローラーを取得することです。これを行う方法については、iOS UITabViewController のドキュメントに適切なドキュメントがあるはずです。

于 2013-06-13T20:21:09.223 に答える