NSTextField未在setStringValue中更新

时间:2014-04-23 02:06:54

标签: objective-c macos cocoa nsstring nstextfield

我有NSTextField根据需要显示状态信息。它的工作方式有点......问题是它只显示updatedString中的最后一个NSTextField而没有显示它。检查NSLog时会显示所有字符串。 NSTextField无法快速处理它,或者它显示得如此之快,人眼无法看到它吗?

示例:

- (void)update {

            NSString* updatedString = @"Update - 1";
            [self updateTextField:updatedString];
            // do other stuff
            updatedString = @"Update - 2";
            [self updateTextField:updatedString];
            // do other stuff
            updatedString = @"Update - 3";
            [self updateTextField:updatedString];
            // do other stuff
            updatedString = @"Update - 4";
            [self updateTextField:updatedString];
}

- (void)updateTextField: (NSString *)updatedString  {

        [TextFieldValue setStringValue:[NSString stringWithFormat:@"%@", updatedString]];   
}

NSTextField显示(一次):

Update - 4

NSLog显示:

Update - 1
Update - 2
Update - 3
Update - 4

2 个答案:

答案 0 :(得分:0)

您可以通过

将字符串附加到文本字段中
[TextFieldValue setStringValue:[NSString stringWithFormat:@"%@%@", [TextFieldValue stringValue], updatedString]];

如果你想睡觉,请使用

 CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1/*seconds*/, NO);

而不是sleep,因此您的应用不会被冻结

答案 1 :(得分:0)

有同样的问题,通过[CATransaction flush]修复了它;和NSTextField setstringValue之后的一个usleep。