2012-07-25 19 views
0

我想显示不同的字符串集合,其中不同的字符串计算取决于发件人的回复。两组字符串是并行的,这意味着命名就像.. user1,user2,object1,object2,name1,name2,age1,age2 ,etc..what我知道到目前为止是使用...如何通过[发件人标签]引用不同的对象?

-(IBAction)showLotOfStuff:(id)sender{ 
switch ([sender tag]) { 
case 1: //show user1, object1, name1, age1... 
case 2: //show user2, object2, name2 age2...} 

然而,到那时我将有两倍大小和重复的代码,因为我有很多事情要做,并show..it是非常愚蠢的,它涉及阵列,计算和我真的想要看到它两次,但我可以通过简单的复制和粘贴..

我不知道是否有任何方法可以削减他们的一半..

-(IBAction)showLotOfStuff:(id)sender{ 
show user[sender tag], object[sender tag], 
name[sender tag], age[sender tag]...} 

这个问题是相当基本的我想,但我只是不知道该怎么做。 Thx为您的帮助!

回答

1

您是否有用户数组?你的数据是什么样的?你可以重构这个,而不是重复代码。

比方说,你有一个NSArrayusers

不知道你使用的是什么样的控件,但为了简单起见,我们可以假设你有一些按钮,每个按钮都应该显示其中一个用户的信息。您可以根据数组用户的位置给出按钮标签,理想情况下可以使用某些偏移量来减少使用这些标签进行其他操作时发生错误的机会。 (即让我们假设你有3个按钮,标签100,101和102,以及3个用户在你的阵列中)。

然后,你可以这样做:

- (IBAction)showLotOfStuff:(id)sender 
{ 
    int userIndex = sender.tag - 100; // you could define 100 as a constant called userOffset or something to make this a little cleaner 
    if(users.count <= userIndex) 
    return; // out of bounds, probably want to check for this and handle it somehow 

    MyObjectType *currentUser = [users objectAtIndex:userIndex]; 
    // do whatever with your user 
} 

这是一个普遍的例子。具体的实施取决于你没有提供的更多细节。

+0

迪玛,thx为您的帮助!但是这里很难解释每个用户的信息,因为它来自大量的计算和数组以及字典。其实我想要使用另一个数组来包含结果,我想我正在寻找更多的动态命名..但我在这里搜索并搜索,发现它不太可能,所以我会考虑你的建议或只是复制代码,因为我有2套信息无论如何..thx再次! – Walter 2012-07-26 05:07:30

相关问题