【问题标题】:Custom UIButton, -(IBAction)action:(id)sender fail自定义 UIButton,-(IBAction)action:(id)sender 失败
【发布时间】:2014-03-14 19:35:21
【问题描述】:

我用这段代码创建了一个自定义 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 命名为发送者 A 按钮,我检查了 NSLog。但这不是我的按钮。它没有任何初始化的 SessionObject,它返回 nil。难道我做错了什么?一些帮助会很棒。

【问题讨论】:

  • OMG.. 我清理了项目,现在可以工作了:/

标签: ios uibutton


【解决方案1】:

试试下面的代码:

- (IBAction) viewForSessions:(SessionButton *)sender 
{
    SessionObject *obj = sender.sessionObj;
    NSString *title = nil;
    switch (obj.type) {
    .
    .
}

【讨论】:

  • 属性 sessionObj 在它所说的 boa boa boa 类型的对象上找不到。
  • 更改方法声明 - (IBAction) viewForSessions:(SessionButton *)sender
  • @ArdaOğulÜçpınar - 如果对您有帮助,您可以接受我的回答 :)
  • 这很有帮助。但不是一个解决方案.. sender 是一个 id,并且 id 没有名为 sessionObj 的属性 .. 它给出了编译错误。 =)
  • @ArdaOğulÜçpınar id 是指向类实例的指针。您可以向它发送任何消息,并且不会收到任何编译错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多