Как автоматически назвать метод после сования контроллера представления от стека на iPhone

Для запуска параллельных команд, почему бы не использовать уважаемую утилиту командной строки make. Она поддерживает параллельное выполнение, отслеживание зависимостей и еще много чего.

Как? В каталоге, в который вы загружаете файлы, создайте новый файл с именем Makefile со следующим содержимым:

# which page numbers to fetch
numbers := $(shell seq 1 10)

# default target which depends on files 1.html .. 10.html
# (patsubst replaces % with %.html for each number)
all: $(patsubst %,%.html,$(numbers))

# the rule which tells how to generate a %.html dependency
# $@ is the target filename e.g. 1.html
%.html:
        curl -C - 'http://www...../?page='$(patsubst %.html,%,$@) -o $@.tmp
        mv $@.tmp $@

ПРИМЕЧАНИЕ Последние две строки должны начинаться с символа TAB ( вместо 8 пробелов) или make не примет файл.

Теперь вы просто запустите:

make -k -j 5

Команда curl, которую я использовал, сохранит вывод в 1.html.tmp и только в случае успеха команды curl она будет переименована в 1.html (с помощью mv на следующей строке). Таким образом, если какая-то загрузка не удалась, вы можете просто повторно запустить ту же команду make, и она возобновит / попытается загрузить файлы, которые не удалось загрузить в первый раз. После того, как все файлы были успешно загружены, make сообщит, что больше ничего не нужно делать, поэтому не стоит вредить запускать его один раз, чтобы быть «безопасным».

(Переключатель -k указывает make продолжать загрузку остальных файлов, даже если одна загрузка не удалась.)

10
задан Machavity 23 August 2019 в 02:03
поделиться

3 ответа

Мне тоже нужно было сделать что-то подобное. В ViewController , которому принадлежал мой UINavigationController , мне пришлось реализовать willShowViewController , например:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
}

Этот метод вызывается всякий раз, когда UINavigationController меняет представления. Если я правильно понимаю ваш вопрос, думаю, это должно сделать то, что вы хотите.

6
ответ дан 3 December 2019 в 16:54
поделиться

Я думаю, здесь есть некоторая путаница. UIView не помещаются и не извлекаются из стека UINavigationController . То, что выталкивается и выталкивается, - это UIViewControllers , которые, в свою очередь, обрабатывают одно или (чаще) несколько представлений каждое.

К счастью, UIViewController имеет следующие методы:

-(void) viewWillAppear:(BOOL)animated;
-(void) viewDidAppear:(BOOL)animated;
-(void) viewWillDisappear:(BOOL)animated;
-(void) viewDidDisappear:(BOOL)animated;

Эти вызываются всякий раз, когда представление вот-вот (исчезнет) появится или только что (исчезло) появилось. Я работаю с панелями вкладок, модальными представлениями и контроллерами навигации. (И их рекомендуется использовать при реализации пользовательских контроллеров.)

Итак, в вашем случае, если я правильно понимаю, вам просто нужно переопределить viewWillAppear : или viewDidAppear : метод того, что вы называете "родительской страницей" чтобы эти сообщения позже отправлялись его дочерним контроллерам. Если вы настроили это с помощью шаблона или в IB, вам, вероятно, не нужно об этом беспокоиться.)

чтобы эти сообщения позже отправлялись его дочерним контроллерам. Если вы настроили это с помощью шаблона или в IB, вам, вероятно, не нужно об этом беспокоиться.)

3
ответ дан 3 December 2019 в 16:54
поделиться

If you need to notify one controller to another you may use delegation pattern as described here (see 2nd answer).

Unfortunately there is no automatic notification(AFAIK) for exact task as you described. To meet your needs you may send message to delegate (i.e. to your parent controller) in viewWillDisappear function of your child controller.

0
ответ дан 3 December 2019 в 16:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: