Загрузка внешнего контроллера вида, нажав кнопку на другом контроллере вида - PullRequest
0 голосов
/ 04 апреля 2011

Теперь я официально раздражаюсь с целью-c и xcode. Программирование на PHP и Java намного проще, ха-ха.

Во всяком случае, я мог бы сделать с некоторой помощью.

Я создал приложение панели вкладок с тремя элементами вкладок для iPhone, на одном из которых он загружает перо с именем mapView, оно содержит кнопку, которую я хочу использовать для загрузки другого перья с именем OverlayViewController.

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

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

Спасибо, Алекс

p.s. Вот ссылка на проект, если вы хотите просмотреть файлы

Ответы [ 3 ]

0 голосов
/ 27 февраля 2012

Первый импорт класса uiviewcontroller на первой странице, как показано ниже:

#import "page2viewcontroller.h"

при коде события нажатия кнопки ниже:

page2viewcontroller *page2 =[page2viewcontroller alloc] ;
[self presentModalViewController:page2 animated:NO];
[page2 release];

после возврата контроллера page2view в page1view, как показано ниже:

 #import "page1viewcontroller.h"

на коде события нажатия кнопки ниже:

page1viewcontroller *page1 =[page2viewcontroller alloc] ;
[self presentModalViewController:page1 animated:NO];
[page1 release];

Вот и все ....!

0 голосов
/ 21 мая 2012

Я сделал это с раскадровкой, и решение состоит в том, чтобы создать переход между контроллером представления панели вкладок и контроллером представления, который вы хотите загрузить, затем вам нужно добавить идентификатор для этого перехода.Наконец, в методе, вызываемом при нажатии кнопки, вы должны поместить это:

[self performSegueWithIdentifier:@"segueId" sender:sender];

Я сделал это прямо сейчас, и он отлично работает!

0 голосов
/ 07 апреля 2011

@ AlexApps Я просмотрел ваш проект и получил несколько отзывов.

Я думаю, прежде чем вы начнете пытаться заставить работать OverlayViewController, вам нужно немного сделать резервную копию и прочитать некоторые документы Apple, особенно руководство по программированию View Controller . Документы Apple по большей части хорошо написаны и должны помочь вам лучше понять представления и контроллеры представлений, чем это видно в вашем коде.

Другое предложение состоит в том, чтобы взять часть свободно доступного исходного кода из книги, такой как Начало программирования для iPhone , в которой есть хороший пример того, как выложить приложение на основе tabBarController. Я уверен, что есть и другие хорошие примеры, которые покажут вам, как организовать ваши представления и контроллеры представления для загрузки их в разные вкладки.

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

Кстати, вы можете рассмотреть возможность использования NavigationViewController для того, что вы пытаетесь сделать с загрузкой OverlayViewController нажатием кнопки, но это займет несколько часов, замедлится и немного сосредоточится на чтении. Это изменит мир. Тогда, если у вас есть более конкретные вопросы, Stack Overflow (и Google) ваши друзья.

Последний совет: вам не нужно помещать IBOutlet в переменные вашего экземпляра И в ваши свойства, просто в одно или другое, и действительно, вам даже больше не нужны переменные экземпляра. Я обычно просто использую свойства для всего.

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