Отображение UILabel в другом представлении после нажатия в одном представлении - PullRequest
0 голосов
/ 01 октября 2011

У меня есть 2 вида

  • SoundViewController
  • ShowViewController

В звуковом представлении есть звук (IBAction).

- (IBAction)oneSound:(id)sender; {
    if (oneAudio && oneAudio.playing) {
        [oneAudio stop];
        [oneAudio release];
        oneAudio = nil;
        return;
    }    
    NSString *path = [[NSBundle mainBundle] pathForResource:@"1k" ofType:@"mp3"];
    if (oneAudio) [oneAudio release];
    NSError *error = nil;
    oneAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
    if (error)
        NSLog(@"%@",[error localizedDescription]);
    oneAudio.delegate = self;
    [oneAudio play];    

mainText.text = @ "test";

}

И ShowViewController должен отображать uilabel, которая была нажата со звуковой кнопки

Я хочу, чтобы, как только пользователь нажал звук на SoundViewController, uilabel появилось на showviewcontrollerкак это выглядит на контроллере звука в данный момент

1 Ответ

0 голосов
/ 01 октября 2011

Ну, вы можете сделать это с помощью

  1. сохранить UILabel
  2. удалить его из своего суперпредставления
  3. добавить его в другое представление
  4. отпустите его

Вам потребуется доступ к ShowViewController из SoundViewController.Поэтому вам придется определить связь между двумя представлениями (скорее всего, через IBOutlet или сохраненное свойство).

Я не уверен, какая переменная в приведенном выше коде является вашей UILabel, поэтому замените 'sender'с правильным ivar (mainLabel, может быть?):

[sender retain];
[sender removeFromSuperview];
[showViewController.view addSubview:sender];
[sender release];

Edit:

Для пояснения, переменная в приведенном выше коде «sender» - это объект, который вызвал этот метод.Все, что вы подключили к IBAction в перо.В этом случае это, вероятно, будет UIButton.Вероятно, вам придется добавить IBOutlet для вашей UILabel и прикрепить его к правильному UILabel в вашем nib-файле и использовать этот IBOutlet вместо «sender».

Вероятно, вам следует прочитать иерархию представления и контроллеры представления,То, что вы пытаетесь сделать, удивительно легко, и существует около десятка способов сделать это, но вы должны сначала понять, как правильно структурировать свое приложение.Наиболее очевидная проблема заключается в том, что два контроллера представления должны иметь ссылку друг на друга, чтобы передавать представления назад и вперед.Я не могу отправить представление другому представлению, если я не знаю, где это другое представление.Представления могут быть связаны в IB, в коде при их создании и т. Д.

view является свойством UIViewController.Предполагая, что ваш ShowViewController является подклассом UIViewController, он будет иметь свойство view.Возможно, ваш ivav showViewController неправильно напечатан?(если тип, например, id, он будет выдавать предупреждение при попытке доступа к его свойству view).

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