2013-01-16 93 views
1

我有NSTextField與佔位符。它綁定到一些整數屬性。所以我想在綁定整數爲零時在字段中顯示空文本(帶有佔位符顯示)。可可綁定:NSTextField爲零值爲空字符串

是否可以做到這一點?

(更新)

我發現,這可以通過NSNumberFormatter做 - 它有—(void) setZeroSymbol: (NSString*) string方法。在實踐中還沒有嘗試過...

+0

通過代碼或通過綁定? –

+0

通過在Interface Builder中進行綁定。 – brigadir

+0

@brigadir我們如何在IB中檢查它?而不是這樣做,檢查負載,然後根據我的答案分配值。 – Girish

回答

3

您可以使用NSValueTransformer。

(以防萬一)從NSValueTransformer創建一個新的類,子類。在實施中,添加這樣的事情:

+(Class)transformedValueClass { 
    return [NSString class]; 
} 

-(id)transformedValue:(id)value { 
    if (value == nil) { 
     return nil; 
    } else { 
     if ([value integerValue] == 0) { 
      return @""; 
     } else { 
      return [NSString stringWithFormat:@"%d", [value stringValue]]; 
     } 
    } 
} 

在Interface Builder中,選擇你的領域,轉到綁定選項卡,並在值變壓器降了下來,在你做你的類名選擇或類型。這應該防止你不必擔心在別處修改它。對於顯示佔位符(我現在沒有可用的Mac),我不是100%正面的。編輯: 我可以證實,這確實有效。這裏是一個github項目的鏈接,我用它來展示如何使用它:https://github.com/macandyp/ZeroTransformer

0

如果在運行時綁定,檢查綁定前的整數值。請嘗試

int i; 
if (i == 0) 
{ 
    txt.placeholder = @"text"; 
} 
else 
{ 
    [txt setStringValue:[NSString stringWithFormat:@"%d",i]]; 
} 
0

您不能進行條件綁定。

您需要創建另一個屬性來保存基於條件的值並使用該屬性並綁定到文本字段。

我使用的是bindedStringbindedIntegerbindedString綁定到文本字段。

每當執行一些操作時,它都會更新。

- (id)init{ 
    self = [super init]; 
    if (self) { 
     [email protected]"place holder string"; 
    } 
    return self; 
} 

- (IBAction)button:(id)sender { 
    if (self.bindedInteger==0) { 
     [email protected]"place holder string"; 
    } 
    else{ 
     self.bindedString=[NSString stringWithFormat:@"%ld",self.bindedInteger]; 
    } 
} 
相關問題