代码之家  ›  专栏  ›  技术社区  ›  Trond Kristiansen

如何单击nstableview中的复选框并使用KVC更新对象?

  •  0
  • Trond Kristiansen  · 技术社区  · 14 年前

     - (IBAction)fileTableViewSelected:(id)sender{
        NSInteger r; 
        NSDate    *fModOne;
        id object;
    
        r = [[NSNumber numberWithInt:[sender selectedRow]] intValue];
        object = [arrayIntersect objectAtIndex:r];
    
        fModOne = [object valueForKey:@"fileModifiedDirOne"];
        NSLog(@"Date found in row is %@",fModOne);
    }
    

    [object setValue:[NSNumber numberWithBool:NO] forKey:@"doSync"];
    

    我的BOOL doSync的setters和getter定义为:

    @property(nonatomic, readwrite) BOOL doSync;
    @dynamic doSync;
    
    
    - (void)setDoSync:(BOOL) value{
    NSLog(@"setting dosync %i", value);
    doSync = NO;
     }
    
     - (BOOL)doSync{
    return doSync;
     }
    

    我到处都在寻找我的问题的解决方案,但是我找不到任何关于如何使用KVC和绑定在tableview中使用复选框的例子。我很感激任何帮助,我可以得到这个,我会感谢任何例子,我可以看看。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Peter Hosey    14 年前

    你不需要将此作为一种行动来实施。只需通过数组控制器的 arrangedObjects doSync 模型对象的属性。

    @dynamic doSync;
    

    如果您在同一个类中实现该属性的访问器,那么就没有理由这样做。

    如果这是一个托管对象类,并且属性是实体的属性,那么 your accessors should send [self willAccessValueforKey:] before and [self didAccessValueForKey:] after accessing the instance variable 全部的 如果是这样的话,那么您就不应该实现自定义访问器;将它们删掉并拥有它们 @dynamic 一个人。

    - (void)setDoSync:(BOOL) value{
        doSync = NO;
    

    这不是将属性设置为传入的值。