0

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);

助けてくださいありがとう。

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 の新しいインスタンスを作成し、ペン先からそのビューをロードしていますが、投稿したコードから、実際には画面に表示していません (省略しない限り?)

また、ところで、privateSwitch というプロパティを宣言しましたが、それを使用していません。

于 2011-05-31T02:35:50.240 に答える