在决定寻求帮助之前,做了很多关于我的问题的研究。希望你能够提供帮助
tableView
内有ViewController
,我无法重新加载数据
[[self.tableView indexPathForSelectedRow]row]
始终返回 0
我认为这两个问题有关,我只是不知道为什么。这是我的代码:
.h
档案
@interface IITableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) UIView *blackView;
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end
blackView
是我选择ViewController
而不是TableViewController
的原因,滚动得越多,得到的就越暗。
这是我的故事板设置方式:
&#34;查看&#34;链接到我的blackView
和&#34;表视图&#34;在我的tableView
上,我的blackView
位于tableView
。
以下是代码的其余部分:
viewWillApear
[super viewWillAppear:animated];
[self.tableView reloadData];
...
numberOfSectionsInTableView
return 2;
numberOfRowsInSection
if (section==0) {
return 1;
}
else {
return self.dreams.count;
}
的cellForRowAtIndexPath
if (indexPath.section == 0) {
IIEntryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TitleCell" forIndexPath:indexPath];
...
return cell;
}
else {
IIEntryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EveryCell" forIndexPath:indexPath];
...
NSLog(@"%ld", (long)[indexPath row]);
return cell;
}
一切都很好显示,我的NSLog返回正确的单元格编号。
prepareForSegue
if ([segue.identifier isEqualToString:@"showDetails"]) {
IIDetailViewController *detailViewController = [segue destinationViewController];
detailViewController.dreamEntry = [self.dreams objectAtIndex:[self.tableView indexPathForSelectedRow].row];
NSLog(@"%ld",(long)[[self.tableView indexPathForSelectedRow]row]);
[self.tableView reloadData];
}
self.dreams
是我的数据存储的NSArray
问题在于NSLog
始终返回 0
当我回到这个View Controller
时,我的数据没有重新加载(尽管顺便说一下,在数据源中进行了Sqlite的更改,我必须重建应用程序才能使更改正确显示)
我的segue在CellForRowAtIndexPath
中触发[self performSegueWithIdentifier:@"showDetails" sender:self];
答案 0 :(得分:0)
我认为有两个问题。查看NSLog语句
NSLog(@"%ld",(long)[[self.tableView indexPathForSelectedRow]row]);
应该是.row
NSLog(@"%ld",(long)[[self.tableView indexPathForSelectedRow].row]);
并检查viewWillAppear,如果tableView不是nil
答案 1 :(得分:0)
好的,谢谢你们,问题确实是我没有用正确的方法触发performSegue。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"showDetails" sender:self];
}
使用此代码可以完美运行。 现在我猜这两个问题没有关联,但你对reloadData有什么看法吗?
答案 2 :(得分:0)
现在我猜这两个问题没有关联,但你对reloadData有什么看法吗?
可能你没有为表设置dataSource吗?
self.tableView.dataSource = self