カスタムUITableViewCell
(RootLabeledSwitchTableCell
というサブクラス)内にUISwitch
があります。カスタムUITableViewCell内のUISwitchが利用できません
このセルには、隣にUILabel
とUISwitch
が含まれています。
私はこのカスタムセル内のスイッチを指すkeychainSwitch
呼ば@property
持っている:
@interface RootLabeledSwitchTableCell : UITableViewCell {
IBOutlet UILabel *textLabel;
IBOutlet UISwitch *labeledSwitch;
}
@property (nonatomic, retain) IBOutlet UILabel *textLabel;
@property (nonatomic, retain) IBOutlet UISwitch *labeledSwitch;
@end
を、私は、スイッチの状態が反転された場合に呼び出されるセレクタを追加しました
- (UITableViewCell *) tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = [NSString stringWithFormat: @"%d:%d", [indexPath indexAtPosition:0], [indexPath indexAtPosition:1]];
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
switch (indexPath.section) {
case(kMyFirstSection): {
switch (indexPath.row) {
case(kMyFirstSectionFirstRow) {
[cellOwner loadMyNibFile:@"RootLabeledSwitchTableCell"];
cell = (RootLabeledSwitchTableCell *)cellOwner.cell;
self.keychainSwitch = [(RootLabeledSwitchTableCell *)cell labeledSwitch];
[self.keychainSwitch addTarget:self action:@selector(keychainOptionSwitched) forControlEvents:UIControlEventValueChanged];
break;
}
// ...
}
}
// ...
}
}
だから、このセレクタは正しく動作:
- (void) keychainOptionSwitched {
NSLog(@"Switched keychain option from %d to %d", ![self.keychainSwitch isOn], [self.keychainSwitch isOn]);
}
は何もしないように
-setOn:animated
を引き起こしている
nil
あり、テストから
- (void) updateInterfaceState {
BOOL isFirstTimeRun = [[[NSUserDefaults standardUserDefaults] objectForKey:kIsFirstTimeRunKey] boolValue];
if (isFirstTimeRun) {
[self.keychainSwitch setOn:NO animated:NO];
}
}
が、私はまだスイッチとNSLog
文を操作することができます:3210
はしかし、私はその初期状態を初期化するためにUISwitch
インスタンスの-setOn:animated:
メソッドを使用することはできません正しく例えば、スイッチ状態の変更を表示します:
[Session started at 2009-08-24 07:04:56 -0700.]
2009-08-24 07:04:58.489 MyApp[29868:20b] keychain switch is: nil
2009-08-24 07:05:00.641 MyApp[29868:20b] Switched keychain option from 1 to 0
2009-08-24 07:05:01.536 MyApp[29868:20b] Switched keychain option from 0 to 1
2009-08-24 07:05:02.928 MyApp[29868:20b] Switched keychain option from 1 to 0
は、私はUITableView
デリゲートメソッドでself.keychainSwitch
の設定について行方不明です何かはありますか?
これは私の最後には機能しませんでした。しかし、提案をありがとう。 –
ここでもうまくいきませんでした。私は:[OptionsViewController toggleImage]:インスタンス0x4b305c0 'に送られた認識できないセレクタ。パラメータがなくてもそれを呼び出すことができたことに注意してください(私は明らかにどのスイッチがそれを呼んでいるのかわかりませんでした)。 – Julian
これはうまくいきました。セレクタコールにコロンを含めるためにターゲットアクションを追加するときは必ず確認してください!これは@selector(keychainOptionSwitched :)で動作しますが、これは@selector(keychainOptionSwitched)ではありません。 – Julian