4

私には 2 つの見方があります。最初のものには 2 つのボタンがあり、2 つ目のものにはラベルとボタンがあります。押されたボタンに基づいてラベルのテキストを変更しようとしています。以下のコードでは、2 番目のビューのインスタンスを呼び出して、ラベルのテキストを変更しようとしています。しかし問題は、テキストが変更されていないことです。誰かがここで私を助けることができれば感謝します

@interface firstview : UIViewController {
    IBOutlet UIButton *button1;
    IBOutlet UIButton *button2;

    }

    @property(nonatomic, retain) IBOutlet UIButton *button1;
    @property(nonatomic, retain) IBOutlet UIButton *button2;

    -(IBAction)push:(UIButton *)sender;

    @end



    #import "firstview.h"
    #import "secondview.h"


    @implementation firstview

    @synthesize button1;
    @synthesize button2;

    -(IBAction)push:(UIButton *)sender{

    button1.tag = 1;
    button2.tag = 2;


    if(sender.tag == button1.tag){
    secondview *v2 = [[secondview alloc]initWithNibName:@"secondview" bundle:Nil];
    v2.title =@"first button";
    v2.l1.text = @"BUTTON1";
    [self.navigationController pushViewController:v2 animated:YES];
    [v2 release];
    }
    else if(sender.tag == button2.tag){
    secondview *v2 = [[secondview alloc]initWithNibName:@"secondview" bundle:Nil];
    v2.title =@"Select";
    v2.l1.text = @"BUTTON2";
    [self.navigationController pushViewController:v2 animated:YES];
    [v2 release];
    }

    }

    @end



second view


    #import <UIKit/UIKit.h>


    @interface secondview : UIViewController {
        IBOutlet UIButton *b2;
        IBOutlet UILabel *l1;

    }

    @property(nonatomic, retain)IBOutlet UIButton *b2;
    @property(nonatomic, retain)IBOutlet UILabel *l1;

    -(IBAction)pop:(id)sender;

    @end

    #import "secondview.h"


    @implementation secondview

    @synthesize b2;
    @synthesize l1;



    -(IBAction)pop:(id)sender{
    }



    @end
4

2 に答える 2

4

ラベルテキストを設定しようとしているときに、ビューが2番目のView Controllerにロードされていないため、ラベルはnilです。

ビューコントローラをプッシュした後で呼び出しを移動してみてください。または、(ビューコントローラのみがビュープロパティを変更する必要があるため)ラベル値の2番目のビューコントローラに文字列プロパティを設定し、viewWillAppear内にラベルテキスト値を設定してください。

于 2012-06-10T07:01:57.280 に答える
1

jrturton から: 2 番目のビュー コントローラーにビューが読み込まれていないため、ラベルは nil です。secondview で NSString プロパティを宣言でき、このプロパティの値を firstview から設定でき、この値を viewWillAppear または viewDidLoad メソッドのラベルに設定できます。

于 2012-06-10T07:08:24.900 に答える