我发起了我的cellForRowAtIndexPath。它出现了,但是当我尝试从另一个类引用它时,它返回(null)
。如果我在viewDidLoad中启动它,它可以工作,但它需要在UITableView中。
AddAlbumViewController:
// .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];
SecondViewController:
// .m
TableViewAppDelegate *dataCeter = (TableViewAppDelegate *)[[UIApplication sharedApplication] delegate];
AddAlbumViewController *addAlbumViewController = [[AddAlbumViewController alloc] initWithNibName:@"AddAlbum" bundle:[NSBundle mainBundle]];
UIView *tempView = addAlbumViewController.view;
NSLog(@"privateSwitch: %@", addAlbumViewController.privateSwitch);
请帮助谢谢。
答案 0 :(得分: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的属性但是你没有使用它。