這是一個MonoTouch的(Xamarin工作室)的iPad應用程序圖像加載中多次的MonoTouch/Xamarin工作室
我有一個讓用戶看的圖像和評分,有140倍的圖像和他們的調查隨機顯示。我將這些圖像放在一個文件夾中,並將它們命名爲pic1.jpg,pic2.jpg,pic3.jpg等。在調查開始時,我隨機生成一列1-140的數字,確保不要有相同的數字兩次(這是驗證和正在工作....)。然後我通過陣列並以隨機順序顯示圖像。
iOS7更新後,我遇到了顯示錯誤圖像的問題。它會在一次測試中出現多次。我已經調試過它,它只是顯示錯誤的圖像,幾乎就像圖像已被另一圖像取代一樣......例如,當圖像81應該顯示圖像94實際上已經顯示時。這發生12倍,在140張圖片...
下面是等級代碼:
public override void ViewDidLoad()
{
int[] Num2 = new int[141]; //array for random numbers
int ic = 0; //int count
rand2(ref Num2); //routine to generate random numbers...
this.btnSEG.ValueChanged += delegate(object sender, EventArgs e){ //submit the rating
ic = ic + 1; //increase the count
imgSorce.Image.Dispose(); //clear the current image
using (var pool = new NSAutoreleasePool()) { //put this in to prevent leaks
this.imgSorce.Image = UIImage.FromFile ("image/pic" + Num2[ic] + ".jpg"); //display the next image
};
};
我已經檢查的所有圖像在圖像文件夾,沒有任何重複。
任何想法,爲什麼會發生這種情況?
更新
@Krumelur要求的代碼來生成隨機編號排列...這...
private void rand2 (ref int[] rn)
{
int i = 0;
int icount = 0;
for (i = 0; i <= 139;)
{
int n = 0;
rand3(ref n);
for(icount = 0; icount <= 139;)
{
if (n == rn[icount])
{
icount = 141;
}
icount = icount + 1;
if (icount == 140)
{
rn[i] = n;
i = i+1;
}
}
};
rn[140] = 0;
}
這裏是上面提到rand3 ...
private void rand3 (ref int num)
{
Random r = new Random();
num = r.Next(1, 141);
}
請顯示'rand2()'的代碼。你也可以調試自己,並檢查'Num2'的競爭對手是否有重複,因爲我很確定這是你的問題所在。 – Krumelur
@Krumelur,好問題。我已經更新了該問題以包含此代碼。我應該提到,我已經測試了這個代碼,它給了我正確的結果(隨機數字沒有重複)。謝謝你的幫助! – JamesCBaird