如何在另一个类中禁用 uibutton 而无需导航到该类
Posted
技术标签:
【中文标题】如何在另一个类中禁用 uibutton 而无需导航到该类【英文标题】:how to Disable a uibutton in another class without navigating to that 【发布时间】:2013-05-15 07:29:45 【问题描述】:我的问题不同在这里我有一个大视图(classA)和一个小视图(classB),在这个小视图旁边有四个属于A类的按钮,我想禁用这些按钮。 这是我的代码。
在 B.m 类中
-(void)HideButtons
mainView = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:NULL];
[mainView HidesideBarButtons];
B 类
-(void)HidesideBarButtons
self.peBtn.enabled = NO;
ByViewBtn.enabled = NO;
favouriteBtn.enabled = NO;
settingBtn.enabled = NO;
ItemButton.enabled = NO;
addVehBtn.enabled = NO;
uploadAllBtn.enabled = NO;
deletevideosBtn.enabled = NO;
这些按钮没有被禁用。我没有导航到那个视图(cassA)我住在同一个班级;
【问题讨论】:
你想隐藏或禁用..? 在 self.peBtn.enabled = NO 行放断点;看看这个方法是调用还是不调用? 那个方法正在调用 【参考方案1】:创建一个 classA 的对象,然后使用该对象访问按钮
-(void)HidesideBarButtons
ClassA *obj =[[ClassA alloc]init];//Initialize it by your way
UIButton *myBtn=[obj getButton1];
[myBtn setEnabled:FALSE];
【讨论】:
【参考方案2】:如果我正确理解您的问题,您需要使用 delegate。
在 ClassB.h 中
@protocol ClassBDelegate <NSObject>
-(void) hideSideBarButtons;
@interface ClassB: UIViewController
__unsafe_unretained id<ClassBDelegate> delegate_;
@property (nonatomic, assign) id delegate;
-(void)hideButtons;
@end
----------
In ClassB.m
----------
@implementation ClassB
@synthesyze delegate = delegate_;
-(void)hideButtons
[self.delegate hideSideBarButtons];
----------
In class MainViewController you need to sign up for ClassBDelegate event. Use this code in MainViewController.h
----------
@interface MainViewController : UIViewController <ClassBDelegate>
In ClassB.h
@protocol ClassBDelegate
-(void) hideSideBarButtons;
@interface ClassB: UIViewController
__unsafe_unretained id delegate_;
@property (nonatomic, assign) id delegate;
-(void)hideButtons;
@end
In ClassB.m
@implementation ClassB
@synthesyze delegate = delegate_;
-(void)hideButtons
[self.delegate hideSideBarButtons];
在 MainViewController 类中,您需要注册 ClassBDelegate 事件。在 MainViewController.h 中使用此代码
@interface MainViewController : UIViewController
当您在MainViewController.m
中初始化ClassB
时,您需要编写:
[classB setDelegate:self];
您需要在 MainViewController.m
文件中编写 ClassBDelegate 方法 -(void) hideSideBarButtons
并禁用此方法中的所有按钮。例如(在MainViewController.m
)
-(void) hideSideBarButtons
self.peBtn.enabled = NO;
希望对你有帮助))
【讨论】:
以上是关于如何在另一个类中禁用 uibutton 而无需导航到该类的主要内容,如果未能解决你的问题,请参考以下文章
在 Excel 中,如何调用存储在另一个工作簿中的用户定义函数而无需打开另一个工作簿?