IPhone SDK - Передача переменных между представлениями с анимацией - PullRequest
0 голосов
/ 02 декабря 2009

Привет, я новичок в IPhoneSDK, поэтому, пожалуйста, потерпите меня.

То, что я в основном пытаюсь сделать, это то, что у меня есть один вид с 10 кнопками, названный «от одного до десяти» соответственно. Я хочу, чтобы при нажатии на кнопку (например, «девять») она переходила в другое представление с анимацией, а затем в следующем представлении появляется метка, которая будет отображать текст, соответствующий кнопке. Я ранее нажал. (например: я нажал кнопку «девять», на следующей странице на этикетке будет написано «девять»)

Если это не так сложно, было бы очень признательно, как работает каждая ваша концепция.

У меня в основном свой собственный код, но он определенно запутанный и неправильный.

Концептуально, что я попробовал и узнал до сих пор:

1.) Я пытался анимировать и переключать представления с помощью addSubviews, вставлять подпредставления, setAnimations и т. Д. Мне удалось переключить представления, но я не знаю, как передавать данные.

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

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

Пожалуйста, и спасибо, сэр / мэм

Ответы [ 3 ]

1 голос
/ 02 декабря 2009

Попробуйте использовать теги. Присвойте тег каждой из ваших кнопок (от 1 до 10) и, когда нажмете кнопку, получите тег отправителя. Из этого вы можете узнать, какая кнопка была нажата. Обратите внимание, это необходимо, только если вы используете один и тот же метод для всех нажатий кнопок.

В следующем отображаемом контроллере представления создайте свойство (скажем, clickedButton) типа NSString и синтезируйте его в файле .m.

После получения текста в переменной, основанной на нажатой кнопке, создайте новый объект отображаемого контроллера представления (я полагаю, вы уже это делаете) и установите свойство clickedButton этого объекта viewcontroller.

NewViewController *nController = [[NewViewController alloc] initWithNibName:@"NewView"];
[nController setClickedButton:yourStringVariableWithButtonName];
[[self navigationController] pushViewController:nController animated:YES];

В NewViewController установите текст метки на clickedButton

[yourLabel setText:clickedButton];

Надеюсь, это поможет.

0 голосов
/ 19 января 2010
NSString *zodiac;

for (UIButton *button in [self.view subviews]) {
    switch (button.tag) {
        case 1:
                zodiac = @"Aries";
                break;
        case 2:
                zodiac = @"Taurus";
                break;
        ....
        }

}
0 голосов
/ 04 декабря 2009

Теперь все в порядке! Я полностью понимаю концепции контроллеров представления и контроллеров навигации!

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

- (IBAction) loadZodiac: (NSInteger) тег {

NSString *zodiac;

switch (tag) {
    case 1:
        zodiac = @"Aries";
        break;
    case 2:
        zodiac = @"Taurus";
        break;
    case 3:
        zodiac = @"Gemini";
        break;
    case 4:
        zodiac = @"Cancer";
        break;
    case 5:
        zodiac = @"Leo";
        break;
    case 6:
        zodiac = @"Virgo";
        break;
    case 7:
        zodiac = @"Libra";
        break;
    case 8:
        zodiac = @"Scorpio";
        break;
    case 9:
        zodiac = @"Sagittarius";
        break;
    case 10:
        zodiac = @"Capricorn";
        break;
    case 11:
        zodiac = @"Aquarius";
        break;
    case 12:
        zodiac = @"Pisces";
        break;
    default:
        zodiac = @"None Selected";
        break;
}
lovescopesReading = [[LovescopesReading alloc] initWithNibName:@"LovescopesReading" bundle:nil];
lovescopesReading.title = zodiac;
lovescopesReading.message = zodiac;

Lovescopes6AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.navController pushViewController:lovescopesReading animated:YES];

}

...