Как я могу передать параметр этой функции?

Одним из возможных решений является нацеливание на классы, которые вы НЕ хотите стилизовать, используя комбинатор последующих братьев и сестер ~

.con.car ~ .con.car {
  background: none;
}

.con.car {
  background: red;
}
[111 ]

Однако, это делается гораздо проще, используя JavaScript

document.getElementsByClassName("con car")[0].style.background = "red";
1
2
3
4
5
6

10
задан Jason Plank 14 November 2011 в 15:48
поделиться

6 ответов

replyAll метод должен принять (идентификатор) отправителя. Если UIButton запустил событие, то тот же самый UIButton будет передан как отправитель. UIButton имеет свойство "тег", что можно присоединить собственные данные к (во многом как winforms .NET).

Таким образом, Вы подняли бы трубку свое событие с:

[replyAllBtn addTarget:self.target action:@selector(ReplyAll:) forControlEvents:UIControlEventTouchUpInside];
replyAllBtn.tag=15;

затем обработайте его с:

(void) ReplyAll:(id)sender{
    NSInteger *tid = ((UIControl*)sender).tag;
    //...
21
ответ дан 3 December 2019 в 15:36
поделиться

Модель MVC, используемая в Какао, работает по-другому. В основном идея состоит в том, что управление (=view), такое как кнопка только позволяет функции знать, что оно было нажато, не зная то, что это означает. Функция затем должна знать всю динамику и зависимости. В Вашем случае это - функция, которая должна найти параметр. Для выполнения этого Вы "свяжете" другие объекты с функцией (= контроллер).

Я предполагаю, что Вы читаете несколько учебных руководств по Какао сначала, если Вы хотите продвигаться с программированием iPhone.

1
ответ дан 3 December 2019 в 15:36
поделиться

Это работает теперь :D.

{
NSInteger tid = [sender tag];
}
2
ответ дан 3 December 2019 в 15:36
поделиться

Существует несколько хороших способов сделать это. Два, обычно реализованные, должны были бы иметь контроллер (кто получает действие), знают о возможных отправителях, или наличие самого отправителя имеет метод, который Вы заканчиваете тем, что использовали для определения правильного поведения.

Первое (мой предпочтительный путь, но легко спорить, противоположное) был бы реализован как такой:

@interface Controller : NSObject {
    UIButton *_replyToSender;
    UIButton *_replyToAll;
}
- (void)buttonClicked:(id)sender;
@end

@implementation Controller
- (void)buttonClicked:(id)sender {
    if (sender == _replyToSender) {
         // reply to sender...
    } else if (sender == _replyToAll) {
         // reply to all...
    }
}
@end

Второй путь был бы реализован способом, таким как:

typedef enum {
    ReplyButtonTypeSender = 1,
    ReplyButtonTypeAll,
} ReplyButtonType;

@interface Controller : NSObject {
}
- (void)buttonClicked:(id)sender;
@end

@interface MyButton : UIButton {
}
- (ReplyButtonType)typeOfReply;
@end

@implementation Controller
- (void)buttonClicked:(id)sender {
    // You aren't actually assured that sender is a MyButton, so the safest thing
    // to do here is to check that it is one.
    if ([sender isKindOfClass:[MyButton class]]) {
        switch ([sender typeOfReply]) {
            case ReplyButtonTypeSender:
                // reply to sender...
                break;
            case ReplyButtonTypeAll:
                // reply to all...
                break;
        }
    }
}
@end
0
ответ дан 3 December 2019 в 15:36
поделиться

Если Вы хотите отправить международное значение, установить тег кнопки = международное значение, Вы хотите передать. Затем можно получить доступ к значению тега кнопки для получения интервала, который Вы хотели.

NSInteger не является указателем. Попробуйте это

NSInteger tid = sender.tag;
2
ответ дан 3 December 2019 в 15:36
поделиться

Селекторная функция будет обычно определяться как таковая:

- (void) ReplyAll:(id)sender;

Таким образом, единственный параметр, действие будет когда-либо, получает, фактическое управление, которое назвало его. Вы могли просто добавить свойство к своему управлению, которое может быть считано в replyAll

2
ответ дан 3 December 2019 в 15:36
поделиться