0

levelComplete ビューと levelSelector ビューの 2 つのビューがあります。私がやりたいのは、levelCompleteが表示されるか、ViewDidLoadそのビューで発生したときに、デリゲートをレベルセレクターに送信してビューにボタンを表示し、そのボタンを作成して、 UserInteractionEnabledそれをプログラムできるようにすることです非表示でない場合に何かを行うボタン。

4

1 に答える 1

1

あなたは必ずデリゲートを介してそれをしたいです。もっと簡単な方法でそれを行うこともできます。secondView を呼び出すときは、ボタンに非表示を指示するだけです。したがって、2番目のView Controllerを呼び出すための変更されたコードは次のようになります。

-(IBAction)passdata:(id)sender {
  secondview *second = [[secondview alloc] initWithNibName:nil bundle:nil];  
  self.secondviewData = second; 
  sender.hidden=YES;
  secondviewData.passedValue = textfield.text;
  [self presentModalViewController:second animated:YES];
}

その後、viewDidLoad を使用してビューが再びロードされたときに表示されるように設定できます。必要に応じて、デリゲートを介してそれを行う方法を説明できます。何が最も効果的かを知っておきましょう。

編集 - 代理人による解決策

secondView のヘッダー ファイルは次のようになります。

@protocol SecondViewHandlerDelegate <NSObject>

- (void)viewHasBeenLoaded:(BOOL)success;

@end

@interface secondview :UIViewController {
  IBOutlet UILabel *label;  
  NSString *passedValue;
}
@property (nonatomic, retain)NSString *passedValue;

-(IBAction)back:(id)sender;

@end

次に、secondView(.m) の実装ファイルで、最初にデリゲートを合成し@synthesize delegate;ます。この後、viewDidLoadsecondView に次の行を追加します。

[[self delegate] viewHasBeenLoaded:YES];

これで secondView には十分なはずです。firstViewController で、次の手順を実行します。

ヘッダー ファイル (.h) で、2 番目のビューをインポートし、プロトコルを実装します。

@interface ViewController :UIViewController <SecondViewHandlerDelegate>{
..
..
}

firstViewController の実装ファイル (.m) で、次のメソッドを実装します。

- (void)viewHasBeenLoaded:(BOOL)success
{
    NSLog("Delegate Method Called");
    [myButton setHidden:YES];
}

そして最後に、コードで secondView を呼び出すときに、次の行を追加します。second.delegate = 自己; ...

それはあなたの目的を解決するはずです。答えも正しいとマークしていただければ幸いです。ありがとう :)

于 2013-03-30T21:13:13.567 に答える