3

xibにuiButtonがあります。それらすべてに復元IDを設定しました。これらの復元IDのリストを印刷する必要があります。これを行うには、viewDidloadで次のコードを呼び出します。

-(void)loadViewFromNIB:(NSString *)nibName owner:(id)owner
{


NSArray *objects = [[NSBundle mainBundle] loadNibNamed:nibName owner:owner options:nil];
NSArray *subviews = [[objects objectAtIndex:0]subviews];
for (id key in subviews) {
        [key addTarget:self
        action:@selector(touchB:)
        forControlEvents:UIControlEventTouchDown];
        [key addTarget:self
                   action:@selector(touchE:)
         forControlEvents:UIControlEventTouchUpInside];
        NSString *ident = self.restorationIdentifier;
        NSLog(@"%@",ident);


}

私はこの出力を取得します:

2013-02-24 13:05:38.817 fozbKEY[3939:11603] (null)
2013-02-24 13:05:38.822 fozbKEY[3939:11603] (null)
2013-02-24 13:05:38.824 fozbKEY[3939:11603] (null)

これはただたくさん繰り返すだけです。私が間違っていることは何ですか?どうすれば修正できますか?ありがとう!

4

1 に答える 1

6

ビューコントローラの復元IDをログに記録しています。ボタンの復元IDをログに記録してみてください。今あなたはします:

NSString *ident = self.restorationIdentifier;

その行を次のように変更します。

NSString *ident = [key restorationIdentifier];

あなたのコードへのさらに良い変更はこれでしょう:

for (UIView *subview in subviews) {
    if ([subview isKindOfClass:[UIButton class]]) {
        UIButton *key = (UIButton *)subview;
        [key addTarget:self action:@selector(touchB:) forControlEvents:UIControlEventTouchDown];
        [key addTarget:self action:@selector(touchE:) forControlEvents:UIControlEventTouchUpInside];

        NSString *ident = key.restorationIdentifier;
        NSLog(@"%@",ident);
    }
}
于 2013-02-24T19:25:18.000 に答える