gpt4 book ai didi

ios - 目标 - C : Hidding a button through a delegate

转载 作者:行者123 更新时间:2023-11-29 04:02:09 25 4
gpt4 key购买 nike

我有两个 View ,一个 levelComplete View 和一个 levelSelector View 。我想做的是,当 levelComplete 显示或该 View 上发生 ViewDidLoad 时,我想将委托(delegate)发送到级别选择器以在 View 中显示一个按钮,然后使该按钮 UserInteractionEnabled 这样我就可以对该按钮进行编程,使其在未隐藏的情况下执行某些操作。

最佳答案

您必须通过委托(delegate)来完成此操作。因为你也可以用更简单的方式做到这一点。当您调用第二个 View 时,只需告诉您的按钮隐藏即可。因此,调用第二个 View Controller 的修改代码变为:

-(IBAction)passdata:(id)sender {
secondview *second = [[secondview alloc] initWithNibName:nil bundle:nil];
self.secondviewData = second;
sender.hidden=YES;
secondviewData.passedValue = textfield.text;
[self presentModalViewController:second animated:YES];
}

然后,您可以使用 viewDidLoad 将其设置为在 View 再次加载时可见。如果您需要,我可以告诉您如何通过代表来完成此操作。让我知道什么最有效。

编辑 - 代表解决方案

您的第二个 View 的 header 文件如下:

@protocol SecondViewHandlerDelegate <NSObject>

- (void)viewHasBeenLoaded:(BOOL)success;

@end

@interface secondview :UIViewController {
IBOutlet UILabel *label;
NSString *passedValue;
}
@property (nonatomic, retain)NSString *passedValue;

-(IBAction)back:(id)sender;

@end

然后,在 SecondView(.m) 的实现文件中,首先通过 @synthesize delegate; 合成委托(delegate)。之后,在 secondaryView 的 viewDidLoad 中,添加以下行:

[[self delegate] viewHasBeenLoaded:YES];

这对于您的第二个 View 来说应该足够了。现在到firstViewController,执行以下步骤:

在头文件 (.h) 中,导入第二个 View 并实现协议(protocol):

@interface ViewController :UIViewController <SecondViewHandlerDelegate>{
..
..
}

在firstViewController的实现文件(.m)中,实现此方法:

- (void)viewHasBeenLoaded:(BOOL)success
{
NSLog("Delegate Method Called");
[myButton setHidden:YES];
}

最后,当您调用第二个 View 时,在代码中添加以下行: 第二 View *第二 = [[第二 View 分配] initWithNibName:nil 捆绑:nil]; 第二个.delegate = self; ...

这应该能解决你的目的。如果您也能将答案标记为正确,我将不胜感激。谢谢:)

关于ios - 目标 - C : Hidding a button through a delegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com