[英]What's the best way to download multiple images and display multiple UIImageView?
[英]Best way to add multiple images to what kind of array?
我正在為字母表中的所有字母創建可拖動的字母拼貼。 如果一個單詞需要多個相同的字母,我會在每個字母中創建5個字母。
我在我的MainViewControllers ViewDidLoad:方法中以編程方式創建每個UIImageView。
- (void)ViewDidLoad:
{
for (int i = 1; i <= 5; i++)
{
letterA = [[LetterTiles alloc] initWithFrame:CGRectMake(39, 104, 70, 70)];
[letterA setImage:[UIImage imageNamed:@"a.png"]];
letterA.tag = i;
[letterA setUserInteractionEnabled:YES];
[self.view addSubview:letterA];
[letterA release];
for (int i = 1; i <= 5; i++)
{
letterB = [[LetterTiles alloc] initWithFrame:CGRectMake(112, 104, 70, 70)];
[letterB setImage:[UIImage imageNamed:@"b.png"]];
letterB.tag = i;
[letterB setUserInteractionEnabled:YES];
[self.view addSubview:letterB];
[letterB release];
}
for (int i = 1; i <= 5; i++)
{
letterC = [[LetterTiles alloc] initWithFrame:CGRectMake(185, 104, 70, 70)];
[letterC setImage:[UIImage imageNamed:@"c.png"]];
letterC.tag = i;
[letterC setUserInteractionEnabled:YES];
[self.view addSubview:letterC];
[letterC release];
}
}
我有幾個問題:
我應該為每個字母創建一個數組,還是為所有字母創建一個數組?
我應該使用什么樣的陣列? NSMutableArray / NSArray或NSMutableDictionary / NSDictionary? - 我一直試圖找出如何將所有這些字母添加到所有上述數組類型,然后根據他們的字母和標簽檢索它們,但不能為我的生活搞清楚。 有人願意用代碼中的一個或兩個字母向我展示一個例子嗎?
有沒有比我在這里展示和詢問的更好的方法呢?
對所有字母使用單個NSArray更好,它減少了您必須處理的變量數量。 有這樣的事情:
NSArray *arrayA;
NSArray *arrayB;
NSArray *arrayC;
...
NSArray *arrayZ;
只有很多代碼可以在單個數據結構中輕松訪問,更不用說,如果您計划添加數字,puncutation等,更容易更新。
Mutable意味着它可以更新,所以重要的問題,你的Array / Dictionary應該在運行時更新嗎? 如果答案是否定的,那么非可變數組可能會更好。 另一方面,你必須自動用很多東西填充數組,所以擁有一個可變版本可能會讓你有更清晰的代碼(而不是[[NSArray alloc] initWithObjects:[UIImage imageNamed:@"A"], ...]
)。
所以我會選擇可變版本,只是為了更清晰的代碼。
這是個人選擇,但我不喜歡在靜態類型語言中嵌套數據結構(在python中這樣做是一種幸福,例如myDictArray["key"][1]
)。 我會使用組成鍵的Mutable Dictionary來存儲相關數據:
NSString *key = [NSString stringWithFormat:"%c%d", letter, number]; // For example "J3" is the 3rd J letter.
另一方面,我不使用圖像,而是使用大方形UILabel,以節省內存(和心理健全,處理那么多圖像,呃),並選擇iOS使用的許多字體之一( 這里是一個完整的)清單 )。
有了這個,生成一切,需要兩個嵌套的fors,一個遍歷每個字母,然后每5個重復一個,然后創建標簽並將其扔到字典中(我會寫代碼,但我不在一個mac)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.