感谢Stack的开发人员,我能够发现我之前问题的起源,这个问题发生在我的应用程序的另一个文件中(我正在写一篇新文章)。
我正在尝试编写聊天应用程序以获得乐趣,我编写了一个自定义视图类来显示所有已发送和已接收的消息。我在以下代码行中使用viewWithTag
在我的主视图控制器中调用此类:MessageView *messageView = (MessageView *)[cell viewWithTag:MESSAGE_VIEW_TAG];
。
MessageView类有一个名为transcript的属性,包含消息的所有信息。我还在主视图控制器中设置了MessageView
类的transcript属性。但是,我在MessageView
的实施文件中使用它时遇到了问题。
我收到了错误Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell setTranscript:]: unrecognized selector sent to instance 0x7fc77afe1070'
,我并不理解......这是我的setTranscript方法(不读取所有内容,我认为错误只来自第一个线)。
- (void)setTranscript:(Transcript *)transcript
{
// Set the message text
NSString *messageText = transcript.message;
_messageLabel.text = messageText;
// Compute message size and frames
CGSize labelSize = [MessageView labelSizeForString:messageText fontSize:MESSAGE_FONT_SIZE];
CGSize balloonSize = [MessageView balloonSizeForLabelSize:labelSize];
NSString *nameText = transcript.peerID;
CGSize nameSize = [MessageView labelSizeForString:nameText fontSize:NAME_FONT_SIZE];
// Comput the X,Y origin offsets
CGFloat xOffsetLabel;
CGFloat xOffsetBalloon;
CGFloat yOffset;
if ([transcript.direction isEqualToString:@"right"]) {
// Sent messages appear or right of view
xOffsetLabel = 320 - labelSize.width - (BALLOON_WIDTH_PADDING / 2) - 3;
xOffsetBalloon = 320 - balloonSize.width;
yOffset = BUFFER_WHITE_SPACE / 2;
_nameLabel.text = @"";
// Set text color
_messageLabel.textColor = [UIColor whiteColor];
// Set resizeable image
_balloonView.image = [self.balloonImageRight resizableImageWithCapInsets:_balloonInsetsRight];
}
}
从我在调试器区域中收到的警告消息,我认为我的标题中没有正确定义脚本(我在实现中谨慎导入)。所以这就是我的头文件的样子:
#import <UIKit/UIKit.h>
#import "Transcript.h"
@class Transcript;
#define MESSAGE_VIEW_TAG (99)
@interface MessageView : UIView
@property (nonatomic, strong) Transcript *transcript;
@end
有谁知道我收到此错误消息的原因?我的论点,成绩单有什么问题?非常感谢您提前!!
答案 0 :(得分:1)
看起来你在UITableViewCell中调用setter,但是应该在MessageView中调用。 你能展示用来调用“setTranscript”的代码吗?
答案 1 :(得分:1)
似乎你有一个自定义的tableview单元格,你在其中编写了一个属性Transcript,它有一个setter setTranscript。
似乎你在cellForRowAtIndexPath中dequeueReusableCellWithIdentifier方法返回的是UITableViewCell而不是你自定义的单元格。
因此,尝试在表视图中设置单元格的标识符,并在cellForRowAtIndexPath中检索具有相同标识符的单元格。