gpt4 book ai didi

ios - 针对特定 UITableViewCell 中的特定 UILabel

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:03:59 28 4
gpt4 key购买 nike

我正在构建一个应用程序,我在其中单击“开始”按钮,它会在所选单元格的标签中运行 NSTimer。我正在使用一个原型(prototype)单元,其中有两个标签:名称和时间。这些标签都有自己的标记:分别为 1010 和 1020。在运行时,有 10 个生成的单元格。 NSArrays 正在填充数据。基本上,我正在寻找的是在选定的单元格中启动一个计时器。如果没有在每个单元格中运行计时器,我似乎无法做到这一点。在我的项目中,我只使用一 (1) 个带有一 (1) 个标识符的原型(prototype)单元格。

总而言之,我一直遇到的问题是计时器进入每个单元格。我想弄清楚如何针对特定的单元格。我已经存储了手机号码。我能用它做什么?

感谢您花时间阅读本文,如果您希望我提供更多信息来帮助您回答问题,我将非常乐意这样做!

int cellNumber;
BOOL isCurrentlyRunning = NO;

- (void)viewDidLoad{
[super viewDidLoad];
//Table Data Code
self.peopleArray = @[@"Person 1", @"Person 2", @"Person 3", @"Person 4", @"Person 5", @"Person 6", @"Person 7", @"Person 8", @"Person 9", @"Person 10"];
self.TimeArray = @[@"0:00", @"0:00", @"0:00", @"0:00", @"0:00", @"0:00", @"0:00", @"0:00", @"0:00", @"0:00", @"0:00"];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.peopleArray count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"SimpleIdentifier"];

UILabel *lblName = (UILabel *)[cell viewWithTag:1010];
UILabel *lblTime = (UILabel *)[cell viewWithTag:1020];

NSString *Name, *Time;

Name = [self.roundOrder objectAtIndex:indexPath.row];

lblTime.text = [self formattedTime:self.currentTimeInSeconds];
lblName.text = Name;

return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

[_myTimer invalidate];
self.currentTimeInSeconds = 0;
cellNumber = [indexPath row];
}

- (int)timeToStop{
int retVal = 0;
switch (cellNumber) {
case 0:
retVal = 100;
break;
default:
retVal = 200;
break;
}
return retVal;
}
- (NSTimer *)createTimer {
return [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(timerTicked:)
userInfo:nil
repeats:YES];
}
- (NSString *)formattedTime:(int)totalSeconds
{

int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;

return [NSString stringWithFormat:@"%d:%02d", minutes, seconds];
}
- (void)timerTicked:(NSTimer *)timer {

_currentTimeInSeconds++;
if (self.currentTimeInSeconds == [self timeToStop]){
[_myTimer invalidate];
}
self.lblTimer.text = [self formattedTime:_currentTimeInSeconds];
[self.tableView reloadData];
}
- (IBAction)startCountDown:(id)sender {

if (!_currentTimeInSeconds) {
_currentTimeInSeconds = 0 ;
}
if (!_myTimer) {
_myTimer = [self createTimer];
}
isCurrentlyRunning = YES;
}
- (IBAction)stopCountDown:(id)sender {

if(isCurrentlyRunning == YES){
[_myTimer invalidate];
isCurrentlyRunning = NO;
}else{
if (_myTimer) {
[_myTimer invalidate];
}
_currentTimeInSeconds = 0;
self.lblTimer.text = [self formattedTime:_currentTimeInSeconds];
}

}

最佳答案

在您的 didSelect 方法中,在最后重新加载 TableView 以将计时器放在选定的行中

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath     *)indexPath{

[_myTimer invalidate];
self.currentTimeInSeconds = 0;
cellNumber = [indexPath row];
[tblView reloadData] //replace tblView with the name of your tableView, if you don't have an outlet for it then you can create one by control-dragging it to the VC

}

然后

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"SimpleIdentifier"];

UILabel *lblName = (UILabel *)[cell viewWithTag:1010];
UILabel *lblTime = (UILabel *)[cell viewWithTag:1020];

NSString *Name, *Time;

Name = [self.roundOrder objectAtIndex:indexPath.row];
if (indexPath.row == cellNumber) {
lblTime.text = [self formattedTime:self.currentTimeInSeconds];
} else {
lblTime.text = //whatever you want it to say in the rows without the timer
}
lblName.text = Name;

return cell;
}

我认为这就是您要问的,如果是这样,那就应该这样做。

计时器显示在每一行中的原因是您将计时器设置为每个单元格中的 lblTime;它没有任何限制,所以对于每个 indexPath.row 它都会显示计时器

关于ios - 针对特定 UITableViewCell 中的特定 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596095/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com