gpt4 book ai didi

ios - UIView 和 UIViewController

转载 作者:行者123 更新时间:2023-11-28 18:45:19 25 4
gpt4 key购买 nike

我知道这是非常基本的东西,但我需要了解我对此的理解是否正确。

所以我想做的就是这个。我想要一个带有标签的 View ,当双击该标签时会翻转并加载另一个 View 。在第二个 View 中,我想要一个 UIPickerView,在上面我有一个按钮说回来。两个 View 的大小都与 UIPickerView 相同,即 320px x 216px。

我想做的是创建两个名为 labelView 和 pickerView 的 UIView 类。然后我会创建一个 viewController ,它在 loadView 上加载 labelView 然后当用户双击 labelView 我得到一个事件在发送到我的 viewControllerlabelView 类中,然后可以卸载 loadView 并加载 pickerView

这听起来是最好的方法吗?有更简单的方法吗?我也不确定如何将事件从 labelView 类路由到 viewController 类。

最佳答案

我不知道最有效的方法(因为我现在也在学习这种语言),但可以肯定的是我已经解决了你的问题。我为此做了一个简单的程序。我的示例中涉及的三个类是 BaseViewController(将显示两个 View )、LabelView 和 PickerView(根据您的要求)。

在LabelView.h中

@protocol LabelViewDelegate
-(void)didTapTwiceLabelView;
@end

@interface LabelView : UIView {

id <LabelViewDelegate> delegate;
}
@property(nonatomic,retain)id <LabelViewDelegate> delegate;
-(void)didTouch;

@end

在 LabelView.m 中

@synthesize delegate;

-(id)initWithFrame:(CGRect)frame {

self = [super initWithFrame:frame];
if (self)
{
UILabel* labl = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, frame.size.width-20,20)];
labl.text = @"Some Text";
[self addSubview:labl];
[labl release]; labl = nil;
self.backgroundColor = [UIColor grayColor];
UITapGestureRecognizer* ges = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTouch)] autorelease];
ges.numberOfTapsRequired = 2;
[self addGestureRecognizer:ges];

}
return self;
}


-(void)didTouch
{
[delegate didTapTwiceLabelView];
}

//=========================================== ================

在 Pickerview.h 中

@protocol PickerViewDelegate
-(void)didTapBackButton;
@end

@interface PickerView : UIView <UIPickerViewDelegate,UIPickerViewDataSource>{

id <PickerViewDelegate> delegate;
}
@property(nonatomic,retain)id <PickerViewDelegate> delegate;

@end

在 Pickerview.m 中

@implementation PickerView

@synthesize delegate;

-(id)initWithFrame:(CGRect)frame {

self = [super initWithFrame:frame];
if (self)
{
UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 30, 320, 216)];
picker.delegate = self;
picker.dataSource = self;
[self addSubview:picker];
[picker release]; picker = nil;
self.frame = CGRectMake(frame.origin.x, frame.origin.y, 320, 250);

UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setFrame:CGRectMake(10, 1, 50, 27)];
[btn setTitle:@"Back" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(backButton) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btn];
}
return self;
}
-(void)backButton
{
[delegate didTapBackButton];
}

//=========================================== =======================

在BaseViewController.h中

#import "LabelView.h"
#import "PickerView.h"

@interface VarticalLabel : UIViewController<UITextFieldDelegate,PickerViewDelegate,LabelViewDelegate> {

PickerView* myPickerView;
LabelView* myLabelView;
}

@end

在BaseViewController.m中

-(void)viewDidLoad
{
[super viewDidLoad];

myPickerView= [[PickerView alloc] initWithFrame:CGRectMake(0, 50, 320, 250)];
[self.view addSubview:myPickerView];
myPickerView.delegate = self;

myLabelView= [[LabelView alloc] initWithFrame:CGRectMake(0, 50, 320, 250)];
[self.view addSubview:myLabelView];
myLabelView.delegate = self;

myPickerView.hidden = YES;

}
#pragma mark PickerViewDelgate
-(void)didTapBackButton
{
myPickerView.hidden = YES;
myLabelView.hidden = NO;
}

#pragma mark LabelViewDelegate
-(void)didTapTwiceLabelView
{
myPickerView.hidden = NO;
myLabelView.hidden = YES;
}

关于ios - UIView 和 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040653/

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