的UITableView不重新加载
我有一个问题,更新UITableView
。我呼吁它的reloadData
方法,但cellForRowAtIndexPath
不会被调用。代码:的UITableView不重新加载
//.h
@interface MasterViewController : UIViewController<ELCTextFieldDelegate, UITableViewDelegate, UITableViewDataSource> {
//some variables
}
@property (nonatomic, retain) IBOutlet UITableView *theTableView;
//other properties
//.m
- (void)viewDidLoad {
//some code
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
- (void)keyboardWillHide:(NSNotification *)notification {
self.theTableView.frame = CGRectMake(0, 0, 320, 480 - 64);
[self.theTableView reloadData];
}
我UITableView
连接theTableView
在厦门国际银行,我还设置它的delegate
和dataSource
到File's Owner
。
我使用ELCTextFieldCell
,它为我提供了一个UITableViewCell
与UILabel
和UITextField
。我在单元格中插入了一些值,当键盘隐藏tableView时,它应该重新载入它的数据以在其中一个单元格中显示正确的结果。我做了一些调试和计算的工作,因为它应该,但该单元格不刷新(正如我前面提到的cellForRowAtIndexPath
方法没有得到[self.theTableView reloadData]
后调用。
谢谢。
任何帮助,将不胜感激
EDIT
找到的,一个 “丑” 的解决方案。而不是调用
[self.theTableView reloadData];
的
我叫
[self.theTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:7 inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
这是丑陋和硬编码,这可能导致问题以后,如果我会添加更多的细胞或删除一些,但它的作品。
还在寻找那个会用reloadData
方法
reloadData
重新显示只有可见行(效率)。您刚才reloadData
之前设置你的tableview的框架,这一事实让我觉得,由于某种原因,tableview中没有看到特定的细胞在当时是可见的,所以它不会对一个新的要求(这解释了为什么后向下滚动/向上刷新正确)。尝试轮询您的tableview看到之前调用reloadData
([theTableView visibleCells];
)什么报告为可见的细胞。我希望这能帮助你跟踪问题。
谢谢!这正是发生的事情。在键盘仍然可见的情况下,tableView变得越来越大,可以拍摄整个屏幕。因此应该更新的单元格被键盘覆盖。只是将'UIKeyboardWillHideNotification'更改为'UIKeyboardDidHideNotification',现在它就像一个魅力一样。 – Novarg
检查tableView
不为零的解决方案......如果是这样分配的内存
什么是在
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
和
返回- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
比都返回非零值它应该被称为只有当u有在表中的一些变化
他们分别返回1和8,因为它应该是 – Novarg
上面的方法被调用?然后检查你是否有连接数据源和委托出口连接到类和你的类声明
也检查上述两种方法不会错误地互换...只是猜测... –
表被重新加载.....
正在修改用作数据源的字典 – Novarg
当您运行第一次您的项目时,您是否正在获取数据表 – Rajneesh071
nope,当我启动应用程序时tableView为空 – Novarg
可以实现代码如下实例为null。那它不起作用。保持NSLog(@“theTableView%@”,theTableView);并检查。 – Dee
你在哪里分配内存到表格视图? – rishi
@Dee它不是。如果我将它从屏幕上滚动并再次显示,单元格将刷新。调试器在keyboradWillHide的第一行显示如下:'(UITableView *)$ 7 = 0x079f3e00; contentOffset:{-0,-0}>'。所以我想这不是代码中的@rishi –
Novarg