2016-05-13 80 views
0

我有一個viewUITabelView它有可移動的行,調整我的ViewController內的不同view上的按鈕。 當一行被移動時,view中的圖標應該更新。見下面(注意[self refreshicons]):UIButton和UILabel不從UIButton更新視圖

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{ 
    NSInteger sourceRow = sourceIndexPath.row; 
    NSInteger destRow = destinationIndexPath.row; 
    id object = [shortcutApps objectAtIndex:sourceRow]; 

    [shortcutApps removeObjectAtIndex:sourceRow]; 
    [shortcutApps insertObject:object atIndex:destRow]; 
    [tableView reloadData]; 
    [self refreshIcons]; 

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:shortcutApps forKey:@"ShortcutArray"]; 
} 

這是[self refreshicons]

-(void)refreshIcons{ 
icon1 = [shortcutApps objectAtIndex:0]; 
NSLog(@"%@",icon1); 
[extraIcon1 setImage:[UIImage imageNamed:[[icon1 lowercaseString] stringByReplacingOccurrencesOfString:@" " withString:@""]] forState:UIControlStateNormal]; 
extraIconLabel1.text = icon1; 
NSLog(@"%@",extraIconLabel1); 
} 

的NSLogs打印正確的字符串,但UILabel的和UIButton的圖像不更新。當在同一個view中創建一個運行與[self refreshicons]相同的代碼的按鈕時,該代碼將按需要運行。但是,當行被移動或者在view之外按下按鈕時,標籤和按鈕不會更新。 想法?

+0

你可以發佈一些截圖來有更好的想法 – harshitgupta

+0

你爲什麼從'moveRowAtIndexPath:'方法調用'reloadData'? – rmaddy

+0

@rmaddy,因爲我的tableview有行,需要根據其索引號 – Manesh

回答

0

看來,無論發生在tableview:cellForRowAtIndexPath:方法是覆蓋您的圖標。

refreshIcons中的參考文獻我猜可能是你爲了快速更新值而參考的出路,但他們可能正在通過reloadData循環。

+0

我在與UITableView相同的UIView中添加了一個按鈕,圖標仍然沒有更新爲需要顯示的圖像/文本。需要刷新的按鈕位於UIScrollView中。奇怪的NSLog顯示按鈕標籤是更新後的標籤,但標籤本身沒有更新。 – Manesh