2017-03-19 36 views
2

我有一個int n保存值。 我想創建一個循環,將創建具有連續標籤的UIImageViews。用標籤創建UIImageView。 Swift 3

我的代碼:

var n:Int = 1 
if arrayOfEmojis.count != 0 { 
     for emoji in arrayOfEmojis { 

       let emojiView = self.view.viewWithTag(n) as! UIImageView 
       emojiView.image = emoji 
       ... 

} 

但emojiView不創建。 當我使用「如果讓emojiView =」它也只是沒有創建。 我使用「viewWithTag(n)」func錯了嗎?

_______edit_________

使用.viewWithTag()錯了,只好只是分配一個標籤與.tag財產。 但是,現在,我想使用分配的標籤來獲取該視圖。 我想現在我可以使用.viewWithTag() func? 我得到unexpectedly found nil...打電話時: (n在以前的環中imageViews創建使用,它被更新爲創建imageViews的號碼):我想你誤會使用的目的

if arrayOfEmojis.count != 0 { 
     for j in 1...n { 

      var view1 = self.view.viewWithTag(j) as! UIImageView 
      arrayOfEmojiViews.append(view1) 
     } 
    } 
+0

'viewWithTag(_ :)'不會創建任何內容 - 它只是返回視圖層次結構中具有匹配標記的現有視圖https://developer.apple.com/reference/uikit/uiview/1622429-viewwithtag –

+0

我的猜測 - 這個編輯實際上是一個新問題 - 是(1)你沒有使用* viewWithTag *,因爲沒有匹配你正在搜索的值。爲什麼? (2)可能是因爲創建標記值的循環將內*值設置爲循環,然後*將其遞增。最終結果是一個** n **值,它是在創建的任何標籤上+1的值。 – dfd

+0

是的,原來的問題由艾哈邁德回答。然而,後者我需要再次使用.viewWithTag()。它不起作用。 決定更新我的問題,因爲它在.viewWithTag()的同一主題上。 – Evgeny

回答

0

view​With​Tag(_:​)

返回其標記指定值一致的看法。

創建一個新的實例,它被用於獲取基於其標籤值的特定標識的視圖。

如果我沒有弄錯,要創建新實例,通過提的是:

我想創建一個循環,將連續用 標籤創建UIImageViews的 *。

它應該是類似於:

var n:Int = 1 
var currentTag = 0 
if arrayOfEmojis.count != 0 { 
    for emoji in arrayOfEmojis { 

     let emojiView = UIImageView(image: emoji) 
     emojiView.tag = currentTag 
     currentTag += 1 
     // don't forget to set the frame for the emojiView 
     ... 
    } 
} 

在每次迭代中,UIImageView一個新的實例將使用-by init(image:​) initializer-並設置其tag值「連續」基於當前的值創建currentTag變量。

+0

它的工作,感謝解釋。 但是,在程序中,我必須再次使用.viewWithTag,現在才能使用該標記獲取視圖。我將該代碼添加到我原來的問題中。將不勝感激您的建議。 – Evgeny

+0

你能解釋一下你面臨的新問題嗎? –

+0

我正在創建圖像(emojis)在數組中的imageViews。這發生在viewDidLoad中。 後者,我想保存的不僅僅是視圖上的圖像,還有它們的幀,因爲用戶已經平移,捏和旋轉這些imageView。 我想將更改的imageView保存到數組中。在數組內部,我試圖通過它們的標籤獲取imageViews,這是在創建時分配的。 而這種情況並沒有發生,特別是在'.viewWithTag()'這一行。您可以在原始問題的末尾找到我的代碼。 – Evgeny