我在这里切换两个View Controller并遇到一些我不理解的行为。
VC A正在托管一个表视图,该视图在故事板中定义,其中委托和数据源引用VC A,该表也引用了VC A.
表格视图是VC A的属性。
启动应用程序时,一切都很好。表格视图由来自NSUrl的数据填充。
这是来自tableView的日志:(UITableView *)tableView numberOfRowsInSection:
find /volume1/Folder/* -mtime -1 -type d -maxdepth 2 -not -empty > /volume1/Folder/NotEmptyFolders.txt
现在,如果我点击表格视图中的某个项目,我将切换到VC B并显示详细信息。
当我像这样切换回VC A时,神秘感显示出来:
2016-07-01 12:53:01.662 Loc2[18612:4091131] tbl:0x7f832f022200
2016-07-01 12:53:01.663 Loc2[18612:4091131] count:0
2016-07-01 12:53:01.663 Loc2[18612:4091131] tbl:0x7f832f022200
2016-07-01 12:53:01.663 Loc2[18612:4091131] count:0
2016-07-01 12:53:01.671 Loc2[18612:4091131] tbl:0x7f832f022200
2016-07-01 12:53:01.671 Loc2[18612:4091131] count:0
2016-07-01 12:53:06.743 Loc2[18612:4091131] tbl:0x7f832f022200
2016-07-01 12:53:06.743 Loc2[18612:4091131] count:25
object:_detailDataHolder是一个指向该类的指针,该类包含用于表视图的数据。
现在回到VC A中,表视图已初始化,但当通知出现时,表的地址会发生变化,如日志中所示:
- (IBAction)returnToMain:(id)sender {
[self performSegueWithIdentifier:@"DetailsReturnToMain" sender:sender];
[NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(updateTargetVC) userInfo:nil repeats:NO];
}
-(void) updateTargetVC{
[[NSNotificationCenter defaultCenter] postNotificationName:@"detailsReturned" object:_detailDataHolder userInfo:nil];
}
VC A收到通知:
2016-07-01 12:53:12.659 Loc2[18612:4091131] tbl:0x7f832c106000
2016-07-01 12:53:12.659 Loc2[18612:4091131] count:0
2016-07-01 12:53:12.659 Loc2[18612:4091131] tbl:0x7f832c106000
2016-07-01 12:53:12.659 Loc2[18612:4091131] count:0
2016-07-01 12:53:12.663 Loc2[18612:4091131] tbl:0x7f832c106000
2016-07-01 12:53:12.663 Loc2[18612:4091131] count:0
2016-07-01 12:53:16.662 Loc2[18612:4091131] tbl:0x7f832f022200
2016-07-01 12:53:16.662 Loc2[18612:4091131] count:25
我被困在这里并且没有任何改变表格视图地址的信息。
谢谢!
答案 0 :(得分:0)
要添加评论:
抱歉,但我认为你不了解Larme,ClausM。除非你的segue是一个解开segue,否则你不回到你的代码。你在VC层次结构中“进一步向下”,即你创建一个新的(然后获得一个viewDidLoad
消息,有自己的表和所有)。最后你有两个A实例,显然你的日志来自第二个。我假设您处理通知回调的方式只导致A2记录任何内容(我认为是因为您通过了_detailDataHolder
,我需要看看您的通知回调如何进一步判断)。
总结一下: 您创建一个实例A.单击一个单元格实例化B,您可以在其中执行A稍后需要的其他内容。然而,您不会返回A,而是实例化A2。 然后获取数据。显然,它有一个新的表格以及其他所有内容。
如果情况并非如此,我们无法在没有您的其他信息(即代码)的情况下提供进一步的反馈。