2016-09-07 18 views
1

私はループを使用して、選択していない状態が灰色でないように(私の元のアイコンは白です)、タブバー項目の元の画像を設定しています。期待されるシーケンス式swift 3

for (items in 0 ..< tabBar.items!.count){ 
    let tabItemIndex = tabBar.items![items] 
    tabItemIndex.image = tabItemIndex.image!.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
} 

}

私は最初の行に次のエラーを取得しています:Expected 'in' after for-each patternExpected Sequence expression for for-each loop、およびExpected pattern最近のXcode 8アップデートは、コードを壊したようしかし、それが見えます。

誰でもこのソリューションを修正できますか?今日まで素晴らしい作品でした。

ありがとうございます!

+1

かっこを削除するとどうなりますか? – matt

+0

あなたのコードには非常に奇妙な名前が付けられています。 'items'というインデックスを呼び出してそれを使ってアイテムを取得しますが、' index'を呼び出します。アイテムをitem {item.image = ...} 'として単純に列挙してみませんか? – vikingosegundo

+0

@vikingosegundo私たちが彼のスタイルを改善しようとする前に、彼が構文エラーを越えるようにしましょう! – matt

答えて

8

for x in yはSwiftの実際の表現です。 for (x in y) - forinから分離し、その式をコンパイラにとってナンセンスのように見せかける括弧で分けることはできません。

したがって、カッコを削除しても問題ありません。

2

ループの作成方法や、非常に安全でない強制アンラッピングに関するいくつかの問題があります。これを試してみてください:

if let items = tabBar.items { 
    for tabBarItem in items { 
     if let image = tabBarItem.image { 
      tabBarItem.image = image.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     } 
    } 
} 

たり、クリーナー、次のように:スウィフトで

tabBar.items?.forEach { tabBarItem in 
    if let image = tabBarItem.image { 
     tabBarItem.image = image.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
    } 
} 
0

、Objective-Cのとは異なり、この構造に関わる一切のかっこはありません。括弧を削除して構文エラーを修正してください。

しかし、ここでは構文エラー以外のスタイルと安全性の問題があります。ループを書き直すための、よりクリーンで安全な方法については、piccianoの答えをご覧ください。

+1

いいえいいえいいえ、@ andyvn22、それは_my_答えです。 – matt

+0

「ひどく汚い、無駄に費やされた投稿、または明らかに、おそらくは間違っている回答に出くわしたときには、あなたの下垂体を使用してください。 – andyvn22

関連する問題