如何让下一个IBAction影响下一个空的IBOutet UILabel?

时间:2011-07-29 20:04:41

标签: iphone objective-c xcode uilabel ibaction

我有12个按钮,标有0-11。当用户单击按钮时,标签将插入12个标签出口中的第一个。我希望下一个单击按钮自动将其标签插入下一个可用插座。截至目前,标签只是将自己添加到第一个插座。我尝试了各种修复,但无济于事。

这是我迄今为止的实施:

-(IBAction)enterNumber:(id)sender {
cell1 = cell1+(int)[sender tag];
label1.text = [NSString stringWithFormat:@"%i",cell1];
}

我的问题是让下一个IBAction只显示在cell2中(我假设这个帮助会让我使用cell3-cell12的修复程序。我的书中没有一个建议为我有限的知识提供合适的流程。

在Danillo之后编辑

我没有考虑过IBOutletCollection,我没有听说过它!我一定会尝试使用它。对于想要对我的问题提出更清晰问题的其他人,我将尝试代表用户将与之交互的屏幕的一部分。顶部的数字是固定按钮。底部正方形是单击的顶部按钮标签按顺序记录到系列的位置。我点击了(4)。我希望下一次点击任何顶部按钮登录到第二个底部正方形,但发生的是整数被添加到第一个框中的整数。

(1) - (2) - (3) - (4) - (5) - (6)

[4] [_] [_] [_] [_] [_] [_] [_] [_] [_] [_]

2 个答案:

答案 0 :(得分:1)

听起来好像您要做的是按顺序向一系列标签提供内容。如果这是正确的,这就是我要采取的方法:

iOS 4及更高版本支持插座集合,这些集合可以作为填充了您指定的任何对象的数组使用。

因此,正如您已标记按钮一样,标记您的标签。然后,在.h文件中,声明一个Outlet Collection,如下所示:

@property (nonatomic, retain) IBOutletCollection(UILabel) NSArray *labels;

控制拖动每个标签以将其连接到该出口集合。

然后,当需要将内容分配给标签时,请遍历集合:

for (UILabel *label in self.labels)
{
    if (label.tag == whateverIntYouCareAbout)
    {
       //Do stuff
       break;
    }
}

答案 1 :(得分:0)

从你所说的“但正在发生的事情是整数被添加到第一个框中的整数。”我相信您的问题,您只能在第一个标签中显示数字。这是因为在您的方法中,您使用label1.text = someValue;将标签的文本设置为cell1因此始终更新label1。您应该获得按钮的相应标签的标签。例如,如果您的代码为3,则应更改label3的文本,如果其为7,则更改label7的文本。还要确保您的单元格是否需要相应更改。这就是我从你提到的内容中理解的。如果我错了,请纠正我。