iOS 页面间传值及自定义类拷贝问题

自定义一个TypesItem类,继承自NSObject,含有三个变量(可自定义添加多个)

TypesItem.h

#import <Foundation/Foundation.h>

@interface TypesItem : NSObject<NSCopying>
{
    NSString *type_id;
    NSString *type_memo;
    NSString *type_name;
}
@property (nonatomic,copy) NSString *type_id;
@property (nonatomic,copy) NSString *type_memo;
@property (nonatomic,copy) NSString *type_name;


@end
TypesItem.m文件中,除了要synthesize这三个变量之外
@synthesize type_id,type_memo,type_name;
还要实现NSCopying协议方法

- (id)copyWithZone:(NSZone *)zone

- (id)copyWithZone:(NSZone *)zone
{
    TypesItem *newItem = [[TypesItem allocWithZone:zone] init];
    
    newItem.type_name = self.type_name;
    newItem.type_id = self.type_id;
    newItem.type_memo = self.type_memo;
    return newItem;
}

页面间传值,假设A->B,A中的TypeItem的值要传到B中

在B中.h文件写上代码

@property(nonatomic,copy) TypesItem *selectedItem;
在B.m文件中

@synthesize selectedItem;
在A.m中跳转到B之前加上代码

BViewController *BVC = [[[BViewController alloc] initWithNibName:@"BViewController" bundle:nil] autorelease];
  
    // item为TypeItem类型,且不为空
  
    BVC.selectedItem = item;
    
    [self.navigationController pushViewController:BVC animated:YES];
PS:页面间传值时,此处的BVC.selectedItem中的BVC一定与push过去的BVC保持一致,否则push到B界面中的selectedItem值必定为null。



你可能感兴趣的:(copyWithZone,自定义类的拷贝问题,IOS界面间传值)