如何在两个视图控制器之间连接动作?

时间:2013-01-28 17:07:35

标签: ios

我的故事板中有两个视图控制器。

在第一个视图控制器中,有一个按钮-A,它有动作-A。 当我在第一个视图控制器中按下按钮A时,它在第二个视图控制器中显示A的图像。

我在viewcontroller.h文件中声明了action-A,并在viewcontroller.m文件中实现actionA。 然后我在第一个视图控制器的First Responder上连接action-A和button-A。

当我测试这个应用程序时,我点击按钮-A但它没有进入动作-A。

我在哪里犯了什么错误? 我刚开始学习iOS,我不是专业人士。 请帮帮我,我该怎么办?

在viewcontroller.h中

@interface ViewController : UIViewController
{
 IBOutlet UIPageControl *pagecontrol;
 IBOutlet UIImageView *imageview1;
 IBOutlet UIImageView *imageview2;

 UIImageView *tempimageview, *bgimageview;
}

@property (nonatomic,retain) UIPageControl *pagecontrol;
@property (nonatomic,retain) UIImageView *imageview1;
@property (nonatomic,retain) UIImageView *imageview2;

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

在viewcontroller.m

@implementation ViewController

@synthesize imageview1;
@synthesize imageview2;
@synthesize pagecontrol;

- (IBAction) ButtonA_Click:(UIButton *)sender;
{
 [imageview1 setImage:[UIImage imageNamed:@"MyImage.jpg"]];
 tempimageview = imageview2;
 [imageview1 setHidden:NO];
 [imageview2 setHidden:YES];
}

1 个答案:

答案 0 :(得分:0)

据我所知,您希望视图控制器控制两个单独的视图。因此,您不希望每个ImageView都有两个,但只有一个。

请记住,您将拥有两个单独的对象,即视图控制器。您的代码看起来更多,您希望只有一个代码处理两个视图。这不起作用。

为了使这项工作,第一个视图控制器必须告诉第二个视图控制器它应该使用哪个图像。这可以通过

工作
  • 使用从第一个vc发送到第二个vc的通知。有关如何使用addObserver...postNotification

  • 的信息,请参见NSNotificationCenter
  • 或在第一个vc中拥有第二个vc的属性,您将在创建视图期间设置该属性。最后,您需要一些方法,两个视图控制器都可以相互通信。

另外,请不要声明这些网点是私密的;从括号中删除它们并写下:

@interface ViewController : UIViewController
{
    UIImageView *tempimageview, *bgimageview;
}

@property (nonatomic,retain) IBOutlet UIPageControl *pagecontrol;
@property (nonatomic,retain) IBOutlet UIImageView *imageview1;
@property (nonatomic,retain) IBOutlet UIImageView *imageview2;