具有被从阵列和一个下拉列表填充一个UITableView IAM。 如果我选择的下拉列表中的任何行的阵列将与新的价值观和tableview中应该重新加载插入。 如何动画与新数组内容的tableview? 提前致谢
像我的动画要显示的行一个接一个。 这个方法我试过
- (void)reloadRowsAtIndexPaths:(NSArray )indexPaths withRowAnimation:(UITableViewRowAnimation)animation {
NSIndexPath rowToReload = [NSIndexPath indexPathForRow:[names count] inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[tableDetails reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
}
Answer 1:
要添加到正确的答案,如果你想运行你的所有部分UITableView
你需要做到以下几点:
ObjC
NSRange range = NSMakeRange(0, [self numberOfSectionsInTableView:self.tableView]);
NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range];
[self.tableView reloadSections:sections withRowAnimation:UITableViewRowAnimationAutomatic];
迅速
let range = NSMakeRange(0, self.tableView.numberOfSections)
let sections = NSIndexSet(indexesIn: range)
self.tableView.reloadSections(sections as IndexSet, with: .automatic)
这将重新加载与动画中的表视图的一切。 像一个老板一样。
Answer 2:
使用这种方法,
[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
Answer 3:
斯威夫特3
UIView.transition(with: myTableView, duration: 1.0, options: .transitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)
斯威夫特2
UIView.transitionWithView(myTableView, duration: 1.0, options: .TransitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)
我本就在斯威夫特
Answer 4:
你先告诉的tableView期待与更新beginUpdates
。 然后更新的相关章节(如果您的tableView只有一个部分则只是通过零供区段号)。 在这里你指定动画 - 你可以玩它,以获得您想要的效果。 之后,你叫endUpdates
上的tableView。 对于UITableViewRowAnimation typedef的规定:
typedef enum {
UITableViewRowAnimationFade,
UITableViewRowAnimationRight,
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone,
UITableViewRowAnimationMiddle,
UITableViewRowAnimationAutomatic = 100
} UITableViewRowAnimation;
玩看你要哪一个。 即使选择UITableViewRowAnimationNone
可以有一个很好的效果的时候。 下面的表更新代码:
[self.tableView beginUpdates];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
Answer 5:
在斯威夫特3,您可以在以下简单地添加extension
到UITableView
:
extension UITableView {
func reloadData(with animation: UITableView.RowAnimation) {
reloadSections(IndexSet(integersIn: 0..<numberOfSections), with: animation)
}
}
Answer 6:
您可以使用reloadSections:withRowAnimation:
功能。 检查的UITableView类参考 。
检查此reloadData与动画这已经回答了你的问题。
Answer 7:
下面的方法是通过的tableView动画的支持:
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
使用方法:
//Reload tableView with animation
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationRight];
不同类型的可用动画的是:
typedef NS_ENUM(NSInteger, UITableViewRowAnimation) {
UITableViewRowAnimationFade,
UITableViewRowAnimationRight, // slide in from right (or out to right)
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone, // available in iOS 3.0
UITableViewRowAnimationMiddle, // available in iOS 3.2. attempts to keep cell centered in the space it will/did occupy
UITableViewRowAnimationAutomatic = 100 // available in iOS 5.0. chooses an appropriate animation style for you };
希望这可以帮助!
Answer 8:
我曾尝试这样做,我的Table
是Animated
与流畅的动画效果
//将这个代码要刷新你的表视图
dispatch_async(dispatch_get_main_queue(), ^{
[UIView transitionWithView:<"TableName">
duration:0.1f
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^(void) {
[<"TableName"> reloadData];
} completion:NULL];
});
Answer 9:
尝试而鉴于过渡变化,同时重新加载动画的UITableView
[UIView transitionWithView:_yourTableView
duration:0.40f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^(void) {[_yourTableView reloadData];}
completion:nil];
文章来源: UITableview reloaddata with animation