0

メインのViewControllerとは別のxibからのスイッチを持つプロジェクトがあります。UISwitch を OFF に切り替えると、ViewController のボタンが非表示になるようにしようとしています。xib の .m ファイルで AppDelegate を宣言しようとしましたが、まだうまくいきません。私のコードは次のとおりです。

- (void)viewDidAppear:(BOOL)animated {

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

}

私は何を間違っていますか?私はやろうとしています

if (switch.on) {
     myButton.hidden = YES;
   } else {
     myButton.hidden = NO;
}

2番目のxib(メインViewControllerを持たないもの)の.mファイルでもこれを行いました

#import "AppDelegate.h"
#import "ViewController.h"

しかし、まだ何もありません!したがって、基本的に、あるxibで別のxibからボタンを宣言しようとしています。それでおしまい。助けてくださいありがとう!

4

1 に答える 1

1

最初に、View Controller 間でのデータの受け渡しに関する thisとUISwitch に関する thisを参照してください。

それを理解したら、コードを次のように設定します--

FirstViewController.h:

@interface FirstViewController : UIViewController
{
  ...
}
@property IBOutlet UISwitch *theSwitch;

- (IBAction)switchToggled;

@end

SecondViewController.h:

@interface SecondViewController : UIViewController
{
  ...
}
@property IBOutlet UIButton *button;
@property UIViewController *theFirstViewController;

@end

theFirstViewController何らかの方法で設定されていることを確認してください- 繰り返しますが、ビューコントローラー間のデータの受け渡しを参照してください。次に、switchToggledこれを行うことができます:

- (IBAction)switchToggled
{
  theFirstViewController.button.hidden = YES;
}

覚えておくべき重要なことは、View Controller は魔法のようにお互いを認識していないということです。あなたがしようとしていたように AppDelegate で何かをしたとしても。SecondViewControllerへの参照が必要FirstViewControllerです。

于 2012-05-11T00:59:10.200 に答える