15

UII には、コピー、セルフ コントローラー、またはセルフ ビューが必要です。

UIView* viewOfSelf =[self.view copy];
UIViewController* controller = [self copy];

UIView* viewOfSelf =[self.view mutableCopy];
UIViewController* controller = [self mutableCopy];

エラーは次のとおりです。

    -[UIViewController mutableCopyWithZone:]: unrecognized selector sent to instance 0xb803490
    -[UIView copyWithZone:]: unrecognized selector sent to instance 0x6e0acb0
4

3 に答える 3

31

使用する -

NSData *tempArchiveView = [NSKeyedArchiver archivedDataWithRootObject:self.view];
UIView *viewOfSelf = [NSKeyedUnarchiver unarchiveObjectWithData:tempArchiveView];

同様に -

NSData *tempArchiveViewController = [NSKeyedArchiver archivedDataWithRootObject:self];
UIViewController *controller = [NSKeyedUnarchiver unarchiveObjectWithData:tempArchiveViewController];
于 2012-05-16T08:13:01.287 に答える
5

オブジェクトをコピー可能にするには、クラスもクラスも実装しないNSCopyingプロトコルを実装する必要があります。UIViewUIViewController

ビューをコピーしたい場合は、何か間違ったことをしていると確信しています。メソッドを使用するUIViewのと同じように、コピーは再利用可能なものに置き換える必要があります。UITableViewdequeueReusableCellWithIdentifier:

View Controller のコピーは間違いなくアンチパターンです。既に持っているView Controllerの正確なコピーが必要な場合は、現在のものと同じパラメータで新しいインスタンスを作成してください。

于 2012-05-16T08:04:07.230 に答える