2012-02-26 49 views
0

我正在創建一個應用程序,其中有32個複選框和一個NSTextField。 如果用戶點擊NSTextField,按鈕將採用描述這個數字的二進制表示的值。 沒問題收到關於的NSTextField的「點擊」動作,但對於按鈕我已經宣佈的32個NSButtons數組:引用一個IBOutlet的數組(NSButton)

#import <Foundation/Foundation.h> 


@interface Handler : NSObject 
{ 
    @private 
    IBOutlet NSTextField* textField; 
    IBOutlet NSButton* bits[32];  // here are the buttons 
} 

- (void)awakeFromNib; 
- (void) setTextField : (int) value; 
- (int) getTextField; 
@end 

但是當我嘗試爲複選框與IBOutlet中「位」的鏈接,我不能爲每個成員做。 所以我只能將這個32個指向NSButton的指針組成一個方框。 我也顯示圖像:

Interface builder

這是我的問題,我有32個不同的名稱來手動聲明32個不同網點?

+1

都是相關的複選框(這意味着他們爲了一個共同的功能)?如果是這樣,您可能正在使用NSMatrix對象,您可以通過標記號訪問每個對象。 – 2012-02-26 22:39:44

回答

1

這可能是使用NSMatrix對象的一個​​很好的例子。

您可以將一個按鈕添加到您的界面,然後使用Xcode 4中選擇的按鈕進入編輯器>嵌入>矩陣。然後您可以選擇拖動按鈕的一個角將其展開爲一個矩陣。

NSMatrix允許您通過搜索給定標記或列/行座標來檢索單元格值。

如何: 1)嵌入的NSButton對象:

Creating a button matrix

2)選項-將任何按鈕角部擴大矩陣:

enter image description here

+0

它沒有工作,或者我弄錯了一些東西。 – 2012-02-27 17:41:26

+0

@RamyAlZuhouri檢查我的更新後,它應該爲你工作。 – 2012-02-27 21:56:13

3

你做不必使用32個不同的IBOutlet引用。您可以聲明一個IBOutletCollection

@property (retain, nonatomic) IBOutletCollection(NSButton) NSArray *buttons; 

使用此鏈接將它們全部鏈接起來。請記住,按鈕的順序在運行時是不確定的,也就是說,當應用程序運行時,不能保證按鈕將按任何特定的順序排列。

+0

這不僅僅是一個iOS功能嗎? – 2012-02-26 23:56:47

+0

我認爲你是對的盧卡斯,我試過了,我得到這個錯誤: _expected';'在聲明列表末尾_ 但';'已經是宣告結束了。 – 2012-02-27 16:27:30

0

我把它擴展成了一個矩陣。但圖形上它看起來像一個按鈕。
這是我得到:

enter image description here

enter image description here

+0

將它嵌入到矩陣中之後,您現在必須從按鈕的任何角落拖動選項,這會爲您提供更多複選框。 – 2012-02-27 21:28:27

相關問題