Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableView原型单元中的UISegment控件,当段控件中的值更改时,滚动条移到顶部_Ios_Objective C_Xcode_Uitableview - Fatal编程技术网

Ios UITableView原型单元中的UISegment控件,当段控件中的值更改时,滚动条移到顶部

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

我有一个屏幕,在那里我们用是或否显示问题。对于是或否,我们使用了UISegment控件。 当UISegment控件中的某个值更改时,当我们有更多问题时,以及当我们选择last或but last时(如图所示),滚动条将移动到屏幕顶部

下面是用于呈现控件的代码

链接到输出外观的视频

请帮助我如何在段控制中选择新值时删除滚动运动

-(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];
我认为这也会干扰滚动