Добавление подпредставления в иерархию представлений - PullRequest
0 голосов
/ 25 мая 2009

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

MainWindow

-UIView
--ScrollView
---ScrollView.pages = UIViews
----UIView (from above assignment)
----TextView
----InfoButton

pages - это NSMutableArry объектов pageController. Эти крючок для перьев. Эти перья - это страницы, которые пользователь перелистывает в представлении прокрутки.

Клик InfoButton подключен так:

- (IBAction) infoButton_click:(id)sender{
topView topViewViewController *topView = [[topViewViewController alloc] initWithNibName:@"TopView" bundle:[NSBundle mainBundle]];
//[self.navigationController pushViewController: topViewView animated:YES]; 
//[self.view addSubview: topViewView.view];
[super.view addSubview: topViewView.view];
[topViewView release];
}

InfoButton находится на одной из страниц в ScrollView. Я закомментировал другой код, который был опробован. Ничто из этого не добавляет вид. Ничего не произошло. Есть ли способ получить TopView как вид сверху в иерархии?

Ответы [ 2 ]

2 голосов
/ 25 мая 2009

Ваша цель - добавить представление в качестве подпредставления или перейти на новое представление с помощью контроллера навигации? Я собираюсь предположить последнее на данный момент.

- (IBAction)infoButton_click:(id)sender
{
    TopViewController *topViewController = [[TopViewController alloc] initWithNibName:@"TopView" bundle:nil];
    [self.navigationController pushViewController:topViewController animated:YES]; 
    [topViewController release];
 }

Это правильно, если у вас действительно есть навигационный контроллер. Убедитесь, что вы действительно делаете. Когда «ничего не происходит» в Какао, это обычно означает, что что-то ноль. Вы должны проверить в отладчике или с помощью NSLog(), чтобы увидеть, является ли какое-либо из этих значений нулем. Возможно (даже вероятно), что у вашего родителя есть навигационный контроллер, но у вас его нет.

Классы всегда должны иметь основной капитал. Не создавайте переменную с именем «view» класса «UIViewController». Это верный путь к страданию. Objective-C - это динамический язык с ограниченными проверками компилятора типов. Правильное присвоение имен важно для эффективного программирования в ObjC.

1 голос
/ 26 мая 2009

Исходя из вашего комментария к предыдущему ответу, вы хотите представить модальное представление. Вы делаете это, создавая новое представление "modalView" и вызывая [topView presentModalViewController:modalView animated:YES].

В будущей версии iPhone OS, которую я, конечно, не смог бы прокомментировать, если бы она была под NDA, вы могли бы представить модальный контроллер представления с переворотом, установив свойство на контроллере представления. быть представленным, что, вероятно, будет называться modalTransitionStyle или что-то подобное.

...