Ios UITableView原型单元中的UISegment控件,当段控件中的值更改时,滚动条移到顶部
我有一个屏幕,在那里我们用是或否显示问题。对于是或否,我们使用了UISegment控件。 当UISegment控件中的某个值更改时,当我们有更多问题时,以及当我们选择last或but last时(如图所示),滚动条将移动到屏幕顶部 下面是用于呈现控件的代码 链接到输出外观的视频 请帮助我如何在段控制中选择新值时删除滚动运动Ios UITableView原型单元中的UISegment控件,当段控件中的值更改时,滚动条移到顶部,ios,objective-c,xcode,uitableview,Ios,Objective C,Xcode,Uitableview,我有一个屏幕,在那里我们用是或否显示问题。对于是或否,我们使用了UISegment控件。 当UISegment控件中的某个值更改时,当我们有更多问题时,以及当我们选择last或but last时(如图所示),滚动条将移动到屏幕顶部 下面是用于呈现控件的代码 链接到输出外观的视频 请帮助我如何在段控制中选择新值时删除滚动运动 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return timeOutQuestions.count;
}
- (UITableViewCell* )tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
static NSString* questionTableIdentifier=@"SegmentCell";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier: questionTableIdentifier];
if(cell == nil){
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:questionTableIdentifier];
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.textLabel.numberOfLines = 0;
}
cell.separatorInset = UIEdgeInsetsMake(0.0 , cell.bounds.size.width , 0.0, -cell.bounds.size.width);
Question* currentQuestion=[[shared getQuestions:questionSet] objectAtIndex:indexPath.row];
@try{
UISegmentedControl *segment = [[cell.contentView subviews] objectAtIndex:0];
segment.selectedSegmentIndex = [[questionSegmentControl objectAtIndex:indexPath.row] integerValue];
[segment addTarget:self action:@selector(segmentSwitch:) forControlEvents:UIControlEventValueChanged];
UILabel *label = [[cell.contentView subviews] objectAtIndex:1];
label.text = currentQuestion.questionText;
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}@catch(NSException* ex){
NSLog(@"%@",ex.reason);
}
if(changeOffSet && indexChangedValue.row > 2){
[self.questionTableView setContentOffset:tableContentOffSet animated:NO];
[UIView setAnimationsEnabled:true];
changeOffSet = false;
}
return cell;
}
- (IBAction)segmentSwitch:(UISegmentedControl *)sender {
NSInteger selectedSegment = sender.selectedSegmentIndex;
CGPoint senderOriginInTableView = [questionTableView convertPoint:CGPointZero fromView:sender];
NSIndexPath *indexPath = [questionTableView indexPathForRowAtPoint:senderOriginInTableView];
indexChangedValue = indexPath;
tableContentOffSet = self.questionTableView.contentOffset;
[UIView setAnimationsEnabled:false];
changeOffSet = true;
}
我想你是在用这个程序进行滚动
[self.questionTableView setContentOffset:tableContentOffSet animated:NO];
我想你需要重新设计一下。停止更改内容偏移量,然后查看它的运行情况。另外,也许你需要摆脱这条线
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
我认为这也会干扰滚动