原谅我对iPhone编程的无知,因为我是新手。 我正在创建一个应用程序,其中init视图控制器是用于显示数据的UITable视图控制器和用于输入数据的另一个View控制器。
我的问题是,当我输入新数据时,它不会出现在UItable控制器中,我尝试使用[self.tableview reloadData]
中的viewDidLoad
重新加载数据,但数据不会重新加载,因为我我正在使用自定义委托,我尝试将[self.tableview reloadData]
写为我的自定义委托的最后一行,但它也不起作用,我尝试使用viewDidAppear
,但这也不起作用。
这是代码:
MainViewController.m(TableView)
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Initializing conference array");
conferenceData = [[NSMutableArray alloc]init];
SavingData *loadData = [[SavingData alloc]init];
NSLog(@"Loading the file then fill it in an array");
conferenceData = [loadData LoadDataArray];
NSLog(@"Done Initializing conference array");
[self.tableView reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [conferenceData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
NSLog(@"writing data in cell number %i",indexPath.row);
cell.textLabel.text = [[conferenceData objectAtIndex:indexPath.row]name];
return cell;
}
// Implementing the adding delegate
-(void) setInformation:(Adding *)controller withObject:(Conference *)info
{
Conference *confer = info; //Temprory Conference object to store data
SavingData *saveToFile = [[SavingData alloc]init];
if ([saveToFile SavingDataWithObject:confer]) //Calling SavingDataWithObject method and check if the save operation return true or false
{
NSLog(@"Done Saving !!");
}
[self.navigationController popToRootViewControllerAnimated:YES]; // after saving return to the main window
NSLog(@"Should be popped right now");
}
非常感谢您提前
答案 0 :(得分:0)
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
单元格在这里可以为零,因此您实际上可能无法对单元格进行回归。
尝试使用
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
此功能永远不会返回nil。
但首先你必须注册@Cell
是什么。
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
...
}
或者你可以检查单元格是否为零,如果不是则创建单元格,但我认为这种方法更清晰。
最后一想,仔细检查一下,当您调用reloadData
实际填充数组时,可以在cellForRowAtIndexPath
中设置一个断点,以确保它被称为适当的次数。
答案 1 :(得分:0)
我发现了问题
显然,当我用-viewWillAppear
方法编写代码时,表格可以很好地重新加载数据。
非常感谢你帮助我