0

我启动了我的 cellForRowAtIndexPath。它出现了,但是当我尝试从不同的类中引用它时,它返回(null). 如果我在 viewDidLoad 中启动它,它可以工作,但它需要在 UITableView 中。

添加相册视图控制器:

// .h
IBOutlet UISwitch *privateSwitch;
@property (nonatomic, retain) IBOutlet UISwitch *privateSwitch;

// .m
@synthesize privateSwitch;

privateSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(199, 8, 0, 0)];
[privateSwitch addTarget:self action:@selector(switchToggled:) forControlEvents: UIControlEventTouchUpInside];
[cell.contentView addSubview:privateSwitch];

第二视图控制器:

// .m

TableViewAppDelegate *dataCeter = (TableViewAppDelegate *)[[UIApplication sharedApplication] delegate];
AddAlbumViewController *addAlbumViewController = [[AddAlbumViewController alloc] initWithNibName:@"AddAlbum" bundle:[NSBundle mainBundle]];
UIView *tempView = addAlbumViewController.view;

NSLog(@"privateSwitch: %@", addAlbumViewController.privateSwitch);

请帮忙谢谢。

4

1 回答 1

1

假设这段代码:

privateSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(199, 8, 0, 0)];
[privateSwitch addTarget:self action:@selector(switchToggled:) forControlEvents:    UIControlEventTouchUpInside];
[cell.contentView addSubview:privateSwitch];

实际上在您的 tableView:cellForRowAtIndexPath: 中,那么当您尝试查看 privateSwitch 时,甚至可能还没有调用该代码。(我假设您在尝试记录之前从 AddAlbumViewController 的新实例中读取了 privateSwitch,但您忽略了该代码。)

在您的 SecondViewController 中,您正在创建 AddAlbumViewController 的一个新实例并从 nib 加载该视图,但是从您发布的代码中,您实际上并没有在屏幕上显示它(除非您忽略了它?)

另外,顺便说一句,您声明了一个名为 privateSwitch 的属性,但是您没有使用它。

于 2011-05-31T02:35:50.240 回答