代码之家  ›  专栏  ›  技术社区  ›  James Sumners

是否存储以前选定的UISegmentedControl段?

  •  2
  • James Sumners  · 技术社区  · 16 年前

    我需要跟踪以前选择的UISegmentControl段。我可以使用委托方法吗?也许像 selectedSegmentShouldChange: segmentedControl:selectedSegmentChanged: . 这个代表是我需要的一步之后的一步。

    1 回复  |  直到 16 年前
        1
  •  2
  •   James Sumners    11 年前

    没有处理这种情况的API。相反,我必须使用一个简单的FIFO缓冲区来跟踪最后选定的段。这是我的密码 PreviousItem 对象:

    // PreviousItem.h
    
    #import <Foundation/Foundation.h>
    
    typedef struct {
      char current;
      int a;
      int b;
    } itemFIFO;
    
    @interface PreviousItem NSObject {
      itemFIFO stack;
    }
    
    - (void) push(int) a;
    - (int) pop;
    
    @end
    
    // PreviousItem.m
    
    #import "PreviousItem.h"
    
    
    @implementation PreviousItem
    
    - (id) init
    {
      if ( ![super init] ) {
        return nil;
      }
    
      stack.a = -1;
      stack.b = -1;
    
      return self;
    }
    
    - (void) push(int) a
    {       
      stack.b = stack.a;
      stack.a = a;
    }
    
    - (int) pop
    {
      return stack.b;
    }
    
    @end
    

    它的用法示例如下:

    prevSegment = [[PreviousItem alloc] init];
    [prevSegment push:0]; // Previously selected segment is 0
    [mySegmentControl setSelectedSegment:1]; // Choose a new segment
    [prevSegment push:1]; // Update our segment stack
    // User does something and we need to know the previously selected segment
    int oldSegment = [prevSegment pop]; // Will return 0 in this contrived example