Я хотел бы вставить задержку NSTimer внутри метода и задавался вопросом, как это сделать. Я выделил место, где хотел бы поставить таймер задержки.Как вставить NSTimer в метод?
вот мой код до сих пор:
- (void) buttonPressed:(UIButton*) sender {
for(int i = 0;i < [categoryBtnImages count]; i++)
{
UIButton *but = (UIButton *)[catButtonArray objectAtIndex:i];
if(but != sender)
{
[but setImage:[UIImage imageNamed:[categoryBtnImages objectAtIndex:i]] forState:UIControlStateNormal];
// but.selected = !but.selected;
}
}
buttonCat = (UIButton *)sender;
int tagOfButton = buttonCat.tag - 2;
if (tagOfButton == -2){
tagOfButton = 8;
}
[buttonCat setImage:[UIImage imageNamed:[categoryBtnImagesSel objectAtIndex:tagOfButton]] forState:UIControlStateNormal];
Я хотел бы поставить задержку здесь затем запустить остальной код, но все это из этого метода.
if ([sender.titleLabel.text isEqualToString:@"Button 0"]) {
[self foodCatSort:nil];
[self.tableView reloadData];
}
if ([sender.titleLabel.text isEqualToString:@"Button 1"]) {
[self healthCatSort:nil];
[self.tableView reloadData];
}
if ([sender.titleLabel.text isEqualToString:@"Button 2"]) {
[self shoppingCatSort:nil];
[self.tableView reloadData];
}
}
FYI причина, почему я хочу сделать это потому, что нажата кнопка, которая перезагружает таблицу и изменения состояния кнопки изображения. Я хотел бы, чтобы пользователь сначала увидел изменение изображения uibutton, а затем перезагрузил таблицу. Я думал, что отсрочка решит это.
Вы не должны этого делать, поскольку это прервет основной поток пользовательского интерфейса, что даст плохой интерфейс. Вместо этого задержка выполняется, выполняя то, что вы хотите делать в методе * таймера * объекта NSTimer. – trojanfoe
Основное соглашение с trojanfoe об этом - никогда не блокируйте поток пользовательского интерфейса для тривиальных вещей. Просто используйте performSelector: withObject: afterDelay - и расщепление ваших методов не так уж плохо. Прерывание вашей работы в логические единицы действия дает гораздо более читаемый код. – CrimsonDiego
Вы не можете/не должны задерживаться в рамках метода. Вы делаете первую часть, а затем планируете выполнение второй части. –