Как ссылаться на объект без использования свойства или ivar - PullRequest
1 голос
/ 29 марта 2012

Если я использую следующее для добавления подкласса UIView в коллекцию подпредставлений:

-(void)loadOutlet
{
    myOutlet *out = [[myOutlet alloc] init];
    [self addSubview:out];
    [out release];
}

-(void)unloadOutlet
{
    myOutlet *out = <<HOW CAN I REFERENCE IT FROM subviews array?>>
    [out removeFromSuperView];
}

Какой лучший способ сделать это?

С тех пор я использую циклдля каждого подпредставления найти с помощью isKindOfClass, но нет лучшего способа?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 29 марта 2012

Вы можете назначить тег для подпредставления, а затем извлечь его, используя тот же тег.

-(void)loadOutlet
{
    myOutlet *out = [[myOutlet alloc] init];
    out.tag = 1; // Or some other value
    [self addSubview:out];
    [out release];
}

-(void)unloadOutlet
{
    myOutlet *out = [self viewWithTag:1];
    [out removeFromSuperView];
}
0 голосов
/ 30 марта 2012

В качестве альтернативы:

NSArray *currentSubViews = [self.subviews copy];

// Loop through each subview
for (id subview in currentSubViews) {

    // Check the Objective-C class of this object
    if ([subview isKindOfClass:[myOutlet class]]) {

        // Remove the superview
        [subview removeFromSuperView];
    }
}

Динамический характер Objective-C - отличный инструмент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...