我有一个可变数组,其中数据是动态的。为此,我有一个UITextField
和一个添加UIButton
。 UITextField
仅接受数字数据。
当我点击添加按钮时,数据输入如下。
[1,5,6,2,1,5,3,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
诀窍是让变量跟踪你所在阵列的索引。然后,您可以删除一个(上一个)或添加一个(下一个)以获取数组中所需的值。
希望有所帮助!