Objective-C 入門指南 - 清除與拷貝

Clear 按鈕是要清除 inputField 與 outputField 的內容,最簡單的方式就是將原本的內容更換為空的 NSString 字串 (string)




對應到 Clear 按鈕的 clear: 方法 (method) 如下
- (IBAction) clear: (id)sender {
    [inputField setStringValue: @""];
    inputText = @"";
    [outputField setStringValue: @""];
    outputText = @"";
    [displayField setStringValue: @"This is Clear button. Your input is clear."];
}


這是依序將 inputField 、 inputText 、 outputField 及 outputText 設定為 @"" ,最後在 displayField 顯示完成工作的提示訊息。


Build and Go ,我們先輸入 "There is no spoon." 並且編碼



按下 Clear 按鈕,完成清除



至於 Copy 按鈕,我們希望設計成將編碼或解碼的結果拷貝到系統的剪貼簿,這就稍微複雜一點,程式碼如下
- (IBAction) copy: (id)sender {
    if (outputText == nil || ![outputText compare: @""]) {
        [displayField setStringValue: @"This is Copy button. No output string!!"];
 }
    else {
        NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard]; 
        [pasteBoard declareTypes:[NSArray arrayWithObjects:NSStringPboardType, nil] owner:nil]; 
        [pasteBoard setString: [outputField stringValue] forType:NSStringPboardType];

        [displayField setStringValue: @"This is Copy button. Result is copied to clipboard."];
 }
}


以上提供的是 Mac OS X 10.5 之前作業系統版本的做法, 10.6 以後的寫法,請參考 Pasteboard Programming Guide


首先建立 NSPasteboard 物件 (object) 變數 pasteBoard
NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard];


然後向 pasteBoard 傳遞 declareTypes: 訊息,以 NSArray 物件當第一個參數 (parameter) ,此 NSArray 的第一個元素為貼到剪貼簿的物件型態 (type) ,即 NSStringPboardType
[pasteBoard declareTypes:[NSArray arrayWithObjects:NSStringPboardType, nil] owner:nil];


最後設定 pasteBoard 的字串,也就是 outputField 中的內容
[pasteBoard setString: [outputField stringValue] forType:NSStringPboardType];


Build and Go ,我們再次輸入 "There is no spoon." 並且編碼,然後點擊 Copy



這樣就可以把結果貼到其他地方囉



接下來,我們繼續設置存檔與讀檔的功能吧!


中英文術語對照
字串string
物件object
參數parameter
型態type


您可以繼續參考
GUI 篇


相關目錄
Objective-C 入門指南
Objective-C 教材
首頁



參考資料
Learning Objective-C: A Primer
The Objective-C Programming Language
Cocoa Fundamentals Guide
Coding Guidelines for Cocoa
Advanced Memory Management Programming Guide
Archives and Serializations Programming Guide

沒有留言: