2012-06-16 21 views
1

我在Storyboard中有幾個UIViews,當然,我可以使用segue在它們之間切換。最初這工作得很好: notenKurse是一個NSMutableArray,而kurse1Outlets是一個帶有我的UITextField的插座集合。插座在再次顯示「舊」視圖後不工作

int counter = 0; 
for (UITextField *tf in kurse1Outlets) { 
    NSMutableString *t = [NSMutableString stringWithFormat:@"%@", [notenKurse objectAtIndex:counter]]; 
    NSLog(@"Object at index %i is %@", counter, [notenKurse objectAtIndex:counter]); 
    if ([t isEqualToString:@"42"]) { 
     [t setString:@""]; 
    } 
    [tf setText:t]; 
    NSLog(@"UITextField in slot %i should now display %@", counter, t); 
    counter++; 
} 

我所有的UITextFields都顯示存儲在數組中的值。但是,如果我轉到另一個視圖(讓我們假設我有一個按鈕;))更改一些東西,然後回到原始UIView上面的代碼仍然執行,並且數組中有不同的值(這應該是是)。我可以在日誌中看到。但愚蠢的UITextField只是不顯示任何東西。既沒有在那裏,也沒有新的文本。但爲什麼?日誌清楚地表明t是它應該是什麼,所以錯誤必須寫入文本字段,因此我認爲這是一個插座問題...

+0

如果有幫助:代碼設置正確的文本,只是一個完全不同的UITextField,一個,這是不是在我的視圖。 (我設置了文本並使用tf.text進行了檢查,確實有正確的文本... – hutattedonmyarm

+0

ok我認爲我發現了問題:當我離開視圖並稍後重新輸入時,outletcollection會再次加載問題:UITextFields正在重新生成,它們現在位於不同的內存地址,所以我設置了舊的UITextFields的文本,這些文本不再顯示了,如何解決它的任何想法? – hutattedonmyarm

回答

2

不保證您的outlet集合的順序。它的處理非常像NSDictionary,而不是NSArray - 訂單得到保證。迭代這種收集將產生不同的設備/人/月相階段的結果。

當我使用這樣的集合時,我傾向於設置'標籤',然後在viewDidLoad排序標籤時對outlet集合進行重新排序。

self.calendarDayImageViews = [_calendarDayImageViews sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    if ([(UIView *)obj1 tag] < [(UIView *)obj2 tag]) { 
     return NSOrderedAscending; 
    } 
    else if([(UIView *)obj1 tag] > [(UIView *)obj2 tag]){ 
     return NSOrderedDescending; 
    } 
    else{ 
     return NSOrderedSame; 
    } 
}]; 
+0

我其實在viewDidAppear方法中做到這一點...... 'NSComparator comp = ^(id a,id b){if([a tag]> [b標籤]){返回(NSComparisonResult)NSOrderedDescending;} if([a tag] <[b tag]){return(NSComparisonResult)NSOrderedAscending; } return(NSComparisonResult)NSOrderedSame; }; \t NSUserDefaults * prefes = [NSUserDefaults standardUserDefaults]; \t self.kurse1Outlets = [self.kurse1Outlets sortedArrayUsingComparator:comp];' – hutattedonmyarm

+0

哪個代碼首先運行。 ViewDidAppear或您的業務邏輯的領導職位?另外,你是說你從外部客戶端代碼設置集合值UITextFields? – Sandoze

+0

首先調用viewDidAppear(排序)。不,我沒有,我測試了保存整個集合並重新加載它,但我已經刪除了代碼,因爲它沒有工作。抱歉讓人困惑。 – hutattedonmyarm

1

您可以輸出的tf,由

NSLog(@「%@」,tf);

檢查tf是否爲空

+0

< UITextField:0x822dd50; frame =(204 49; 44 31); text ='4'; clipsToBounds = YES; opaque = NO; autoresize = RM + BM; tag = 2; gestureRecognizers = ; layer = > 我想這不是問題... – hutattedonmyarm

0

好吧,我找到了。我忘了發佈一些東西,所以我的UITextFields在數組排序前確實已經設置好了。我的錯!