最初の行で最初にdetailtextlabelに静的な値を追加しようとしているテーブルビューがあります。したがって、最初にテーブルビューが読み込まれると、detailtextlabelにデフォルト値が表示されます。 detailtextlabelをクリックすると、それが切り替わります。デフォルト値を別の値に切り替えるコードを追加しました。これは正常に動作しています。 これは私のコードです:実行時にタブバーのタブを変更する方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
cell = [tableView cellForRowAtIndexPath:indexPath];
switch (indexPath.row) {
case 0:
if ([cell.detailTextLabel.text isEqualToString:@"digital"]) {
cell.detailTextLabel.text = @"analog";
userdefaults = [NSUserDefaults standardUserDefaults];
[userdefaults setObject:@"analog" forKey:@"clock"];
}
else {
cell.detailTextLabel.text = @"digital";
[userdefaults setObject:@"digital" forKey:@"clock"];
}
[userdefaults synchronize];
break;
default:
break;
}
}
しかし、私の問題は、ラベルがデジタルからアナログに変更なっているときで、メインウィンドウの最初のタブとして追加されたデジタルビューコントローラは、アナログへの変更を取得する必要がありアナログがデジタルに変更されると、デジタル表示コントローラは、第1のタブのアナログ表示コントローラに置き換えられるべきである。
//私はこのコードを実行しましたが、appdidfinishの起動時に実行時にタブバーを変更しません。
NSString *clockswitch = [[NSUserDefaults standardUserDefaults]objectForKey:@"clock"];
if ([clockswitch isEqualToString:@"digital"]) {
DigitalClockViewController *dig = [[DigitalClockViewController alloc]init];
//self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:0];
}
else
{
AnalogClockViewController *ana = [[AnalogClockViewController alloc]init];
//self.tabBarController.selectedViewController = [self.tabBarController.ana objectAtIndex:0];
}
は、あなたは自分がapplicationDidFinishLaunchingでコードを実行し、理にかなっていることself.tabBarController.selectedIndex = digitalClockControllerIndex – Willy