-1

重複の可能性:
ナビゲーション スタック内の 1 つのビュー コントローラーから別のビュー コントローラーにモデル オブジェクトを渡す

iphone の 2 つのビュー間でコントロールを渡そうとしています。私はこれを試してみましたが、最初のView Controllerから2番目のView Controllerに渡すと正常に動作しますが、2番目をクリックすると空白になります。どうしてこんなことに?どんな助けでも大歓迎です..ありがとう...

Viewcontroller.h

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

@interface ViewController : UIViewController <SecondViewControllerDelegate>
{
    IBOutlet UILabel *lbl;

}
-(IBAction)passdata:(id)sender;

@end

Viewcontroller.m

#import "ViewController.h"
#import "ViewController2nd.h"

@interface ViewController ()

@end

@implementation ViewController

- (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.
}
-(void) changeLabel:(NSString*)str{
    lbl.text = @"Hello";
}

-(IBAction)passdata:(id)sender{
    ViewController2nd *second = [[ViewController2nd alloc] initWithNibName:nil bundle:nil];
    [self presentViewController:second animated:YES completion:^{ }];
}

@end

ViewController2nd.h

#import <UIKit/UIKit.h>


@protocol SecondViewControllerDelegate <NSObject>
@optional
-(void) changeLabel:(NSString*)str;
@end

@interface ViewController2nd : UIViewController{

    IBOutlet UIButton *bttn;

}

-(IBAction)bttnclicked;
-(IBAction)back:(id)sender;
@end

ViewController2nd.m

#import "ViewController2nd.h"
#import "ViewController.h"

@interface ViewController2nd ()

@end

@implementation ViewController2nd

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

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

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

-(IBAction)bttnclicked{

}

-(IBAction)back:(id)sender{
    ViewController *first = [[ViewController alloc] initWithNibName:nil bundle:nil];
    [self presentmodalViewController:first animated:YES completion:^{ }];
}

@end

何か不足していますか?

4

1 に答える 1

1

要件が最初のビューに移動することである場合は、次のback:ように方法を変更します。

-(IBAction)back:(id)sender
 {
     [self dismissViewControllerAnimated:YES completion:NULL];
 }

parentViewをchilkdViewControllerのchildViewとして表示しないでください。また、メモリの問題や論理的な問題も発生します。

したがって、childViewからparentViewに移動する場合は、childViewを閉じ、親オブジェクトを作成してそこに表示しないでください。

于 2012-10-23T07:51:02.820 に答える