Кажется, это работает довольно хорошо:
UIBarButtonItem *oldButton = [myToolBar.items objectAtIndex:1];
[myToolBar setItems:[NSArray arrayWithObjects:[myToolBar objectAtIndex:0], [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(tapStopRefreshButton:)],nil] animated:NO];
[oldButton release];
В этом примере у меня была панель инструментов для UIWebView, и когда кто-то нажимал «Обновить», я хотел, чтобы он изменился на «Стоп».На панели инструментов было только свободное место и одна кнопка - чтобы выровнять кнопку по правому краю - поэтому я взял ссылку на старую кнопку, сделал новую с тем же селектором, что и у старой, сбросил кнопки на панели вкладок, а затем отпустил оригинальную кнопку.
Не самая красивая, но вы можете использовать все стандартные кнопки без необходимости переопределять класс (ы) кнопок.