1

UIAlertController を表示した後、timerLabel を呼び出すタイマーを開始します。これにより、UIAlertControllers のみのアクション タイトルが更新されます。NSLog は、タイトルが実際には 25 から 1 に変化していることを示しています。ただし、UIAlertController の実際のタイトルは引き続き「25」と表示されます。

タイトルを表示できるように更新するには、何かを呼び出す必要がありますか? 8.3で正確なコードを実行すると動作しますが、これはベータ版であり、実際にリリースされたときに動作しない可能性があるため、ベータ版以外の8.2でも動作する必要があります. 提案をお待ちしております。

NSTimer *buttonTimer;
UIAlertController *touchAdverts;
int timeStart;



-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];

timeStart = 25;
//inform user they need to touch adverts

touchAdverts = [UIAlertController alertControllerWithTitle:@"IMPORTANT" message:@"text to show user" preferredStyle:UIAlertControllerStyleAlert];
[touchAdverts addAction:[UIAlertAction actionWithTitle:[NSString stringWithFormat:@"%i",timeStart] style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
//invalidate timer when button pressed
[buttonTimer invalidate];
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"hasHadTimedAlert"];
[[NSUserDefaults standardUserDefaults]synchronize];
}]];

//disables the action button from being interated with
[touchAdverts.actions[0]setEnabled:NO];
if ( ![[NSUserDefaults standardUserDefaults]boolForKey:@"hasHadTimedAlert"]) {
[self.view.window.rootViewController presentViewController:touchAdverts animated:YES completion:^{
//when alert is shown start timer to update the title of the alerts action
buttonTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerLabel) userInfo:nil repeats:YES];
}];
}



}


-(void)timerLabel{

if (timeStart >0) {
//countdown from timeStart
timeStart  -= 1;
//update the action button title each second to new timeStart value
[touchAdverts.actions[0] setTitle:[NSString stringWithFormat:@"%i",timeStart]];
NSLog(@"%@",[touchAdverts.actions[0] title]);
}else{
//When value of timeStart reaches 0 enable the action button and change title
[touchAdverts.actions[0] setEnabled:YES];
[touchAdverts.actions[0] setTitle:@"I have read & understood the above"];
}

}
4

1 に答える 1

2

現在、アラート コントローラーのビューの表示タイトルは、ビューが表示された後に変更することはできません (ただし、実験からは、最終的には iOS 8.3 で機能し始めるように聞こえます)。ただし、アラート ビュー コントローラーのビューのように見えて動作する独自のビューを使用して、独自のビュー コントローラーを簡単に作成できるため、実際にそうする必要はありません。これを行うと、インターフェイスを完全に制御できます。したがって、これを iOS 8.2 以前で動作させたい場合は、そのようにすることをお勧めします。

于 2015-04-07T15:57:48.810 に答える