向UIViewController添加IBAction按钮

时间:2011-07-08 16:31:47

标签: iphone ios4 uiviewcontroller uiscrollview uibutton

我有一个简单的视图控制器,其中有几个按钮被定义为IBActions。我想将它们放在滚动视图上,基本上可以使整个页面可滚动(假设它们是非常大的按钮,我有一堆它们)。我怎样才能做到这一点?我试图添加这些按钮,但由于它们被定义为IBAction,因此无效。

以下是我的一些代码。谢谢!

- (IBAction) switchFromThird : (id)sender
{
    //some action...
}

- (IBAction) BackHome : (id)sender
{
     //some action...   
}

- (void)viewDidLoad
{
     [super viewDidLoad];    

myScroll.contentSize = CGSizeMake(480, 1000);
myScroll.maximumZoomScale = 4.0;
myScroll.minimumZoomScale = 1.0;
myScroll.clipsToBounds = YES;
myScroll.delegate = self;


[myScroll addSubview:switchFromThird]; //???
[myScroll addSubview:BackHome]; //???


[myScroll release];
}

2 个答案:

答案 0 :(得分:2)

不,不,不。

请阅读iOS Developer Library中的this article。您无法在视图中添加方法(功能)!就像你想在一张纸上打印一份计算机程序一样!

你应该这样做:

  1. .h 文件中写下IBOutlet UIButton *BackHomeButton
  2. 打开 .xib 文件。
  3. BackHomeButton插座连接到按钮
  4. [myScroll addSubview:BackHome];替换为[myScroll addSubview:BackHomeButton];
  5. 然后,只有这样它才会起作用。正如我所说:你只能打印图像和文字,而不能打印计算机程序!

答案 1 :(得分:1)

IBAction不是按钮。它们是专门标记的方法,以便Interface Builder可以轻松找到它们。您仍然需要创建按钮。

您可以在Interface Builder中将它们从对象库拖到滚动视图中来执行此操作。然后,您可以通过鼠标右键将IBAction从新按钮拖到IBAction上定义的任何对象。

如果您希望以编程方式创建按钮,则需要调用[[UIButton alloc[ init ...然后使用按钮的addTarget:action:forControlEvents:方法将按钮连接到您的方法。在这种情况下,没有必要将您的方法声明为IBAction,这只是Apple为了使Interface Builder更容易找到相关方法而付出的代价。