在一个视图中按下后,使UILabel出现在另一个视图中

时间:2011-09-30 23:09:12

标签: objective-c cocoa-touch

我有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上,因为它现在出现在soundviewcontroller上

1 个答案:

答案 0 :(得分:0)

嗯,你可以通过

来做到这一点
  1. 保留UILabel
  2. 将其从超级视图中删除
  3. 将其添加到其他视图
  4. 释放它
  5. 您需要访问ShowViewController中的SoundViewController。因此,您必须在两个视图之间定义连接(通过IBOutlet或保留属性,最有可能)。

    我不确定上面代码中的哪个变量是你的UILabel,所以用正确的ivar(mainLabel替换'sender',也许?):

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

    编辑:

    为了澄清,上面代码“sender”中的变量是触发此方法的对象。无论您在笔尖中连接到IBAction。在这种情况下,它可能是一个UIButton。您可能必须为您的UILabel添加一个IBOutlet,并将其附加到您的nib文件中的正确UILabel,并使用该IBOutlet代替“sender”。

    您应该阅读视图层次结构和视图控制器。您要做的事情非常简单,并且有大约十几种方法可以实现,但您必须先了解如何正确构建应用程序。最明显的问题是两个视图控制器需要相互引用才能来回传递视图。如果我不知道其他视图在哪里,我无法将视图发送到另一个视图。视图可以在IB中创建,在创建时可以在代码中连接等。

    viewUIViewController的属性。假设您的ShowViewControllerUIViewController的子类,它将具有view属性。也许你的showViewController ivar没有正确输入? (例如,如果类型为id,则在您尝试访问view属性时会发出警告。