XCode4でのnib編集時のTarget/Actionの扱い¶
以前のInterfaceBuilderで使っていたテクニックが使えなくなっていた。
InterfaceBuilderではtarget/actionパラダイムで接続出来るクラスは、以下の4つのメソッドがヘッダに定義されていれば問題なく使えた。
- (id)target;
- (void)setTarget:(id)anObject;
- (SEL)action;
- (void)setAction:(SEL)aSelector;
上記の4つのメソッドの有無で、IBActionConnectionでコネクションを張れるかどうかを判断していたらしい。
XCode4でこのテクニックは使えない。代わりに以下のような手法を使う。
actionセレクタを文字列で設定するメソッドを追加する
- (void)setActionName:(NSString*)inActionName { self.action = NSSelectorFromString(inActionName); } - (NSString*)actionName { return NSStringFromSelector(_action); }
ヘッダにtargetをIBOutletを付ける
@property (retain) IBOutlet id target;
XCode4上のUIエディターで通常のconnectionとして接続する事でtargetの設定が出来きる。
XCode4上でセレクタ名を設定する
"Identify Inspector"の"User Defined Runtime Attributes"に
key Path
actionName
Type
String
Value
<selectorNameString>
と設定する。これで、nibの読込み完了時にactionが設定される。
参考文献¶
http://www.cocoabuilder.com/archive/cocoa/311698-making-target-action-of-view-visible-to-ib.html
Comments
comments powered by Disqus