我使用此代码创建了一个自定义UIButton。
@implementation SessionButton
- (id)initWithFrame:(CGRect)frame withSessionObject:(SessionObject*)obj
{
self = [super initWithFrame:frame];
if (self) {
self.sessionObj = obj;
}
return self;
}
@end
并用此分配......
SessionButton *button = [[SessionButton alloc] initWithFrame:CGRectMake(70, (startHour - 7)*80 + startMinute + 2, 220, height -4) withSessionObject:obj];
当我尝试用NSLog检查它时,它是完美的。我用我的对象初始化了按钮。
现在我必须给它一个动作。所以我写了这个。
[button addTarget:self
action:@selector(viewForSessions:)
forControlEvents:UIControlEventTouchUpInside];
这是viewForSessions方法:
- (IBAction) viewForSessions:(id)sender {
SessionButton *mBut = (SessionButton*) sender;
SessionObject *obj = mBut.sessionObj;
NSString *title = nil;
switch (obj.type) {
case 2:
title = @"Konferans";
break;
case 3:
title = @"Panel";
break;
case 4:
title = @"İnteraktif";
break;
case 5:
title = @"Forum";
break;
} //and it goes on....... a bit long
我的问题是,在调用选择器后, id 命名为sender A 按钮,我检查了NSLog。但它不是我的按钮。它没有任何初始化的SessionObject,它返回nil。难道我做错了什么?一些帮助会很棒。
答案 0 :(得分:1)
尝试使用以下代码:
- (IBAction) viewForSessions:(SessionButton *)sender
{
SessionObject *obj = sender.sessionObj;
NSString *title = nil;
switch (obj.type) {
.
.
}