这已经让我头疼几个小时了,我终于知道实际发生了什么,但我不知道如何解决这个问题。在同一个UITableView上调用reloadData,但它好像在调用另一个
我有List.h用的UITableView从故事板连接正确:
@property (strong, nonatomic) IBOutlet UITableView *tableView;
再就是List.m时,我真想代表和数据源为我的UITableView:
// Set tableview datasource and register class for cell reuse
self.tableView.dataSource = self;
[self.tableView registerClass:[TableViewCell class] forCellReuseIdentifier:@"cell"];
// Set tableview delegate
self.tableView.delegate = self;
// Set tableview cells style
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.backgroundColor = [UIColor colorWithWhite:0.1f alpha:1.0f];
// Set tableview frame
self.tableView.frame = CGRectMake(0.0, 35.0, self.tableView.frame.size.width, self.tableView.frame.size.height-35.0);
然后在NSNotification我试图[self.tableView reloadData]:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doUpdateAppBefore:) name:UIApplicationWillEnterForegroundNotification object:nil];
当然我也会重装d每个UIApplicationBecomeActive通知的tableView的ata。
在关闭我的应用程序并从后台打开它以查明它是否重新加载数据之前,我正在转移到另一个UIViewController并返回,这会导致self.tableView的某种标识符发生更改。我正在检查它:
NSLog(@“Calling reloadData on:%@”);
,并在开始的时候给了我:
Calling reloadData on <UITableView: 0x9b09400;....
但之后,我从另一个UIViewController中Segue公司回它给了我:
Calling reloadData on <UITableView: 0x9b4b000;
导致它实际上并不重新加载数据后我从后台状态打开应用程序。
我一直在想......当我从另一个viewcontroller退缩时,viewDidLoad再次触发,是否有可能以某种方式再次设置tableView.delegate并更改某些内容?只是在想......
非常感谢您的回答。
如果viewDidLoad触发两次,那么它看起来像你有一个新的视图,因此也是一个新的tableView。你使用什么样的segue来到你的新视图控制器,以及你用什么样的segue从你的新视图控制器到你的列表视图控制器? – Devin
那么我继续看的视图是另一个ViewController,它有另一个UITableView。这是我正在使用的segue:[self performSegueWithIdentifier:@“Tomorrow”sender:self];标识符今天,它是一个模态segue –
这么愚蠢的问题,问我使用什么segue的伟大提示......我前后继续,仍然创造新的对象,而不是[self dismissViewControllerAnimated :否完成:无]; –