这个话题已经被一遍又一遍地讨论过了,但是经过两天的研究和尝试了所有建议的解决方案,我仍然无法做我想做的事。
首先,我正在使用情节提要为 iOS 5 创建一个应用程序。
我有一个 UITableViewController,有 2 种类型的单元格(一个原始的“消息”和一些“答案”)。我在情节提要中创建了表格,检查了“原型单元格”,用我的 2 个或 3 个标签、一个 textView 和一个图像设计了 2 个单元格。然后,我UITableViewCell
使用 2 个新类进行子类化,我称之为ThreadAlertCell
和ThreadAnswerCell
。我为单元格的元素创建了属性,因此我可以以编程方式设置标签和图像的文本。我像往常一样将我的图形元素与它们在情节提要中的定义联系起来。在我的 TableViewController 中cellForRowAtIndexPath
,我创建了单元格并填充它们。到目前为止一切顺利,一切都正确显示以及我想要的方式。
但是,我想要一个单元格图像上的“触摸”,弹出一个新视图,显示用户的个人资料页面(另一个基本视图,我可以使用 performSegue 来完成,这没问题)。
我已经尝试了很多东西,我不确定在这里详细介绍所有内容是否很有用。在寻找答案时,我了解到UIImageView
在您期望处理手势时使用 a 并不是最好的方法。所以我把它改成了UIButton
. 但我无法让触摸事件做任何事情!
我将仅给出“答案”单元格的示例。
这是我的ThreadAnswerCell头文件(我不会给出 .m,那里没什么有趣的):
@interface ThreadAnswerCell : UITableViewCell
@property (nonatomic) IBOutlet UILabel *senderLabel;
@property (nonatomic) IBOutlet UILabel *dateLabel;
@property (nonatomic) IBOutlet UITextView *contentTextView;
@property (nonatomic, weak) IBOutlet UIButton *senderButton;
@end
这是cellForRowAtIndexPath
我的TableViewController的一半(在那之前我对“消息”做了同样的事情):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"ThreadAnswerCell";
ThreadAnswerCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[ThreadAnswerCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
Message *message = [threadArray objectAtIndex:indexPath.row];
cell.senderLabel.text = [NSString stringWithFormat:@"%@", message.sender];
cell.contentTextView.text = [NSString stringWithFormat:@"%@", message.content];
cell.dateLabel.text = [NSString stringWithFormat:@"%@", message.date];
//[cell.senderButton setBackgroundImage: [[UIImage alloc] initWithData: [NSData dataWithBase64EncodedString: message.userPic]]
// forState: UIControlStateNormal];
[cell.senderButton addTarget:self action:@selector(firstButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
CGRect frame = cell.contentTextView.frame;
frame.size.height = cell.contentTextView.contentSize.height;
cell.contentTextView.frame = frame;
[cell.contentTextView sizeToFit];
return cell;
}
正如你所看到的,我使用我的自定义单元格,然后用内容填充它(我使用了三个没用stringWithFormat
的,但我有我的理由,哈哈),我尝试向我的按钮添加一个事件。我还评论了我将按钮的背景图像设置为“看到”屏幕上的按钮的部分。
这是我希望按钮调用的方法:
- (void)firstButtonSelected: (id)sender
{
NSLog(@"hello");
}
但是,该方法永远不会被调用!关于我哪里出错或任何其他可行解决方案的任何想法都会很棒!谢谢。