使用委托从 VC2 取消隐藏 VC1 中的按钮
Posted
技术标签:
【中文标题】使用委托从 VC2 取消隐藏 VC1 中的按钮【英文标题】:Unhide buttons in VC1 from VC2 using delegate 【发布时间】:2014-05-13 11:14:05 【问题描述】:我正在尝试使用辅助 VC 中的按钮取消隐藏 ViewControl 中的一些按钮。
在我的研究中,我发现我必须使用“委托操作”。
我创建了两个名为 VC1 -> VC2 的类
VC1.h 包含:
#import <UIKit/UIKit.h>
@protocol CustomDelegate <NSObject>
-(void)hideUnhidebutton:(BOOL)value;
@end
@interface VC1 : NSObject <CustomDelegate>
@property (strong, nonatomic) IBOutlet UIButton *buttonToUnhide;
@end
在VC1.m中我实现了取消隐藏按钮的功能:
#import "VC1.h"
@interface VC1 ()
@end
@implementation VC1
-(void)hideUnhidebutton:(BOOL)value
[self.buttonToUnhide setHidden:value];
在此之后,我在 VC2.h 中添加了添加委托变量作为属性
#import <UIKit/UIKit.h>
#import "VC1.h"
@interface VC2 : UIViewController
@property (nonatomic, strong) id<CustomDelegate> delegatePpty;
@end
最后我在 VC2.m 中调用了委托函数
#import "VC2.h"
@interface VC2 ()
@end
@implementation VC2
-(void)someAction
[self.delegatePpty hideUnhidebutton:NO];//Call the delegate method to execute
没有问题,但是当我尝试启动项目时,它在加载显示此问题后就崩溃了:
这里是项目文件:
http://salvonostrato.com//ex/xcode5/TEST2.zip
我不知道下一步该怎么做... 请帮忙。
//已编辑
IT 一直在显示崩溃:
【问题讨论】:
先在VC2中编写协议.. 谢谢你的意思是先写@protocol CustomDelegate您的 VC1 应该扩展 UIViewController。
@interface VC1 : UIViewController <CustomDelegate>
之后在界面构建器中再次建立连接。
【讨论】:
【参考方案2】:您好,我查看了您的代码,我将更改一些内容。我会分享这个。请检查一下
Replace @interface VC1 : UIViewController <CustomDelegate> instead of @interface VC1 : NSObject <CustomDelegate>
并在故事板中添加一个导航控制器,如下图所示
现在它运行完美:)
【讨论】:
谢谢 .. 我尝试更改代码并添加 NC,但现在我无法进入 VC1 或添加按钮 我现在感觉很蠢,但是如果我运行这个项目,它会在我的 Xcode 5 中不断崩溃 @property (strong, nonatomic) IBOutlet UIButton *buttonToUnhide;这里是崩溃 你必须像@synthesize buttonToUnhide 那样在你的.m 文件中合成;并在情节提要中正确连接。我也在同一点面临崩溃。所以请检查你的连接 出于测试目的,我在您的故事板中添加了一个 UIViewController 类型类。你必须在你的故事板中添加一个导航控制器。使用导航控制器,您可以找到 UITableview 控制器。只需删除该 tableview 控制器并右键单击导航控制器并将 setRootViewcontroller 与 VC1 连接并运行。 :)以上是关于使用委托从 VC2 取消隐藏 VC1 中的按钮的主要内容,如果未能解决你的问题,请参考以下文章