Referências armazenar numa variável em NSMutableArray

votos
0

Eu estou procurando uma maneira de armazenar referências a variáveis ​​dentro de um NSMutableArray. Como variáveis ​​vão ser criadas dinamicamente com base no que o usuário escolheu, eu quero ser capaz de simplesmente classificar através desta matriz e obter referências a essas variáveis ​​criadas. No caso, importa, eu estou criando um projeto de iPhone. No entanto, quando tento fazer isso usando o seguinte código:

for (int a = 0; a < 10; a++)
{
UIView *tempView;
[listingOfViews addObject:tempView];
}

for (int a = 0; a < [listingOfViews count]; a++)
{
[listingOfViews objectAtIndex:a] = defaultViewStructure;
}

Dá-me este erro: erro: lvalue exigido como operando esquerdo da atribuição

Alguma ideia?

EDIT: Além disso, eu recebo este erro: erro: pedido de membro 'tamanho' em algo não uma estrutura ou união

Quando tento fazer

for (int a = 0; a < [listingOfViews count]; a++)
{
[listingOfViews objectAtIndex:a].size.height = ...
}
Publicado 26/08/2009 em 23:12
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Para sua segunda pergunta:

for (int a = 0; a < [listingOfViews count]; a++)
{
    [listingOfViews objectAtIndex:a].size.height = ...
}

Há um mal-entendido (a UIView não tem uma -size, tem uma -Frame que inclui um tamanho), juntamente com algo que é realmente um pouco complicado por causa da notação de ponto muito confuso eles adicionaram em Obj-C 2 e um infeliz colapso do modelo de objeto quando você começa a estruturas. A maneira como você fazer o que você está tentando fazer é:

UIView *view = [listingOfViews objectAtIndex:a];
NSRect frame = [view frame];
frame.size.height = ...
[view setFrame:frame];

Existem maneiras para condensar o número de linhas um pouco, mas você precisa fazer para buscar um struct NSRect, modificá-lo e, em seguida, configurá-lo de volta. Você não pode modificar a altura em uma chamada na maioria dos pontos de vista.

Respondeu 26/08/2009 em 23:46
fonte usuário

votos
0

O que você quer dizer é:

[listingOfViews replaceObjectAtIndex:a withObject:defaultViewStructure];

Mas ele vai falhar quando você tentar colocar os ponteiros tempView não inicializadas na matriz. O que você está realmente tentando fazer aqui? Eu acho que pode ser hora de voltar atrás e começar com o básico de Objective-C. Parece que você está tentando conceitos porta C ++ diretamente ObjC, e eles fazem as coisas de forma muito diferente.

Você pode querer começar com programação em Objective-C , e, em seguida, provavelmente programação Cocoa para Mac OS X . (O último é baseado em Mac, em vez de iPhone, mas ainda é o melhor ponto de partida.)

Respondeu 26/08/2009 em 23:23
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more