代码之家  ›  专栏  ›  技术社区  ›  rson

UISegmentedControl在内部添加方法时更改了事件缺火

  •  1
  • rson  · 技术社区  · 16 年前

    这是我的密码 UIControlEventValueChanged UISegmentedControl :

    - (void)segmentAction:(id)sender{
    
        if([sender selectedSegmentIndex] == 0){     
            pendingIsShowing = YES;
            [freeCutsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
        }else if([sender selectedSegmentIndex] == 1){
            pendingIsShowing = NO;
            [self showAvailableCuts:sender];
            [freeCutsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
        }
    }
    

    [self showAvailableCuts:sender] 调用,但段控件不再更改其索引。如果我注释掉方法调用,它工作得很好…我尝试做的是将分段控件传递到 [自我展示可用性:发件人] 这样改变,但是没有用。。。

    - (void)showAvailableCuts:(id)sender{
        if(!pendingIsShowing){
            NSString *path =@"https://WebserviceURL";       
            NSString* escapedUrl = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            //[sender setSelectedIndex:1];
            NSLog(@"%@", escapedUrl);
            [self parseXMLFileAtURL:escapedUrl];
        }
    }
    

    我不知道这是为什么。。。

    1 回复  |  直到 16 年前
        1
  •  1
  •   NP Compete    16 年前

    不看代码 [self showAvailableCuts:sender]; 我能想到的就是-为什么需要传递“sender”对象本身?只需修改showAvailableCuts方法,以便只需传递所需的值,如 [sender titleForSegmentAtIndex:] [sender selectedSegmentIndex] 等

    好的,首先设置器应该是 [sender setSelectedSegmentIndex:index] 不是你说的那样。我自己也成功地使用了这个-

    sender.selectedSegmentIndex = index; //in your case index is 1