我正在尝试以编程方式转到另一个故事板上的视图控制器。
提供更多细节;我的 xib 上有一个 UILabel 和 UIButton,其中 UILabel 包含一个“Lorem ipsum”,并且按钮的类型已更改为自定义,因此它可以是透明的。我已将按钮的大小设置为覆盖所有 xib 文件。因此,当用户点击按钮时,我可以在该按钮的操作中创建一个 segue。
我知道我不能直接这样做,所以我必须有一个委托方法,它将从我的 xib 的父视图控制器调用。当我运行我的项目时,它一直落入 Mini.m 文件的 btnClick 操作的 else 块中。
我还进行了一些搜索并阅读了一些以前的帖子,例如以下链接,但不知何故无法解决问题。有什么想法我在这里缺少什么吗?
https://stackoverflow.com/a/35583877/1450201
https://stackoverflow.com/a/6169104/1450201
https://stackoverflow.com/a/30508168/1450201
https://stackoverflow.com/a/10520042/1450201
迷你.h
#import <UIKit/UIKit.h>
@protocol SelectionProtocol;
@interface Mini : UIView
@property (nonatomic, weak) id<SelectionProtocol> delegate;
- (IBAction)btnClick:(id)sender;
@end
@protocol SelectionProtocol <NSObject>
@required
-(void) isClicked;
@end
最小米
#import "Mini.h"
@implementation Mini
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
[self load];
}
return self;
}
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self load];
}
return self;
}
- (void)load {
UIView *view = [[[NSBundle bundleForClass:[self class]] loadNibNamed:@"Mini" owner:self options:nil] firstObject];
[self addSubview:view];
view.frame = self.bounds;
// ui component properties will be set here
}
- (IBAction)btnClick:(id)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(isClicked)]) {
[self.delegate isClicked];
} else {
NSLog(@"AAAAAAAAAAAAAA");
}
}
@end
视图控制器.h
#import <UIKit/UIKit.h>
#import "Mini.h"
@interface ViewController : UIViewController <SelectionProtocol>
@end
视图控制器.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void) isClicked {
UIStoryboard *targetStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *targetVC = (UIViewController *)[targetStoryBoard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[self.navigationController pushViewController:targetVC animated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
编辑:我使用我的 UIView 作为我的 UIViewCotnroller 的子视图。这是一个截图