我有UIView
的这个自定义子类,名为productCardView
,非常简单,并且有一些UIImageView
和UILabel
s作为子视图。我添加了子视图并将它们设置为- (void)drawRect:(CGRect)rect
方法,一切都很顺利。
在我的视图控制器中,我从远程服务器获取一些数据,因此填充应该看到的productCardView
。目的是当用户点击这些卡片时,程序会转到目标网址(每张卡片的NSURL
属性)。
问题是根据MVC的基础知识,我应该在UITapGestureRecognizer
的实现中还是在我的视图控制器中向视图添加productCardView
?
如果我要在视图控制器中添加它,基本上我会将相应的代码放在viewDidLoad
方法中,我创建卡片的实例,但是如果我应该在View本身中实现它,其中我应该把代码放进去吗? (在-(void)drawRect:(CGRect)rect
?)
答案 0 :(得分:1)
无论是在卡上还是在视图控制器上,您都应该从视图控制器加载URL。
所以,这意味着......
或
如果该卡是在多个地方使用的控件(或者如果屏幕上有多个控件),那么最好使productCardView
成为UIControl
的子类而不是UIView
。 (UIButton
,UISlider
等等都是UIControl
)的子类。
您无需更改,但您可以执行类似......
的操作[productCardView addTarget:self action:@selector(cardTapped:) event:UITouchUpInside];
就像一个按钮。
然后,您可以在卡片视图中处理触摸,并trigger
处理事件UITouchUpInside
的操作。