我有2个观点
声音视图上有声音(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上
答案 0 :(得分:0)
嗯,你可以通过
来做到这一点您需要访问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中创建,在创建时可以在代码中连接等。
view
是UIViewController
的属性。假设您的ShowViewController
是UIViewController
的子类,它将具有view
属性。也许你的showViewController ivar没有正确输入? (例如,如果类型为id
,则在您尝试访问view
属性时会发出警告。