单击按钮时获取Array元素

时间:2014-08-23 08:17:40

标签: ios objective-c uibutton nsmutablearray

我有一个可变数组,其中数据是动态的。为此,我有一个UITextField和一个添加UIButtonUITextField仅接受数字数据。

当我点击添加按钮时,数据输入如下。

[1,5,6,2,1,5,3,4,........等等..

下一个和上一个有两个按钮。

所以,我想要的是当我点击上一个按钮时,输入的数据必须以相反的顺序依次显示,如果点击下一个按钮,它必须同时显示在前进方向。

4 个答案:

答案 0 :(得分:4)

使用NSSortDescriptor

   NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO];
   NSArray *aArrSortDescriptor = [NSArray arrayWithObject:aSortDescriptor];
   NSArray *aArrSorted = [YourArray sortedArrayUsingDescriptors:aArrSortDescriptor];
   NSLog(@"%@",aArrSorted);

请查看the documentation以及更多信息see this

答案 1 :(得分:3)

你需要保持索引点来获得this.increment并使用上一次和下一次按钮点击减少索引,

- (IBAction)previousClicked:(id)sender {
    if (index != 0) {
        index--;
        self.inputTextField.text = [self.dataArray objectAtIndex:index];
    }
}

- (IBAction)addCLicked:(id)sender {
    [self.dataArray addObject:[NSString stringWithFormat:@"%@",self.inputTextField.text]];
    index = self.dataArray.count;
     self.inputTextField.text = @"";
}

- (IBAction)nextClicked:(id)sender {
    if (index < self.dataArray.count) {
        self.inputTextField.text = [self.dataArray objectAtIndex:index];
        index++;
    }
}

答案 2 :(得分:1)

当您点击上一个按钮时,您需要执行

NSSortDescriptor *Lowest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:NO];
[mutableArrayOfNumbers sortUsingDescriptors:[NSArray arrayWithObject:Lowest]];

答案 3 :(得分:1)

不确定你在这里问的是什么,但我不能评论你的问题。所以我会回答我理解的问题。

首先,要清楚,这就是我所理解的。给定一个包含NSNumber(或NSString?)的数组(例如@[@1, @5, @6, @2, @1, @5]),您希望获得之前输入的数字,依此类推每个时间点击前一个数字按钮。当点击下一个按钮时,下一个。我是对的吗?

如果是这样,这就是答案。

@interface SomeViewController ()
{
    NSArray *numbers;
    NSInteger currentIndex;
}

@end

@implementation SomeViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Init the array and the index with demo values
        numbers = @[@1, @5, @6, @2, @1, @5];
        currentIndex = 3; // that is @2

        NSLog(@"Simulate a tap on the previous button, twice in a row");
        [self tappingPreviousButton]; // 6
        [self tappingPreviousButton]; // 5

        NSLog(@"Simulate a tap on the next button, twice in a row");
        [self tappingNextButton]; // 6
        [self tappingNextButton]; // 2

        // this will print the sequence 6 and 5, then 6 and 2
    }
    return self;
}

- (void)tappingPreviousButton
{
    currentIndex = MAX(currentIndex - 1, 0); // prevent the index to fall below 0
    NSLog(@"%@", numbers[currentIndex]);
}

- (void)tappingNextButton
{
    currentIndex = MIN(currentIndex + 1, [numbers count] - 1); // prevent the index to go above the number of items in your array
    NSLog(@"%@", numbers[currentIndex]);
}

@end

诀窍是让变量跟踪你所在阵列的索引。然后,您可以删除一个(上一个)或添加一个(下一个)以获取数组中所需的值。

希望有所帮助!