這已經讓我頭疼幾個小時了,我終於知道實際發生了什麼,但我不知道如何解決這個問題。在同一個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 :否完成:無]; –