我创建了一个带有注销按钮的视图,我试图将其作为另一个视图的子视图。注销按钮视图有一个xib和一个与xib相关联的控制器。
如何使这个视图/控制器成为我其他视图的一部分?
之前我这样做的方法是通过一个以编程方式绘制自己的视图,在界面构建器中将该视图作为另一个视图的一部分绘制并更改该视图的类。因为我希望该视图响应方法,我让它有一个协议,然后使控制器成为实现的子视图。
这是唯一的方法吗?或者有一种方法,我有一个独立的控制器用于我的注销视图,我可以'插入'到其他视图,因为另一种方法的缺点是每个想要使用这个子视图的视图必须实现协议,即使该方法在每个视图中都是相同的。
答案 0 :(得分:0)
创建一个超类来抽象注销行为。然后,支持注销的每个UIViewController应该子类化该超类。在超类中,提供注销方法。
这种方法可以让你简单地将Interface Builder中的UIControl连接到超类中的公共IBAction,或者甚至在调用超类方法之前在子类中添加特定的自定义。
这是一个可能的例子:
LogoutViewController.h
#import <UIKit/UIKit.h>
@interface LogoutViewController : UIViewController
-(void)performLogout;
@end
LogoutViewController.m
#import "LogoutViewController.h"
@interface LogoutViewController ()
@end
@implementation LogoutViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)performLogout
{
//do logout code
}
- (IBAction)logout:(id)sender
{
[self performLogout];
}
@end
SomeOtherViewController.h
#import <UIKit/UIKit.h>
#import "LogoutViewController.h"
@interface SomeOtherViewController : LogoutViewController
@end
SomeOtherViewController.m
#import "SomeOtherViewController.h"
@implementation SomeOtherViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)mySpecificLogoutButtonPressed:(id)sender
{
self.title = @"Good bye";
// do other code specific to logging out from this UIVC
[super performLogout];
}
@end
答案 1 :(得分:0)
您可以使用NSNotificationCenter
。因此,您可以在注销按钮操作上发布通知。您可以查看documentation。
希望这有帮助。