到现在为止,我已经使用prepareForSegue
方法来通知视图控制器,他将要查看来自其他视图控制器的segue,但是如果我是发送segue的vc,我的prepareForSegue(在他与segue发送者的同一个类中)会在他触发segue之前检查是否有要执行的代码?
我问是因为我在这里有一个解决方案,可以执行一个简单的segue,只是从表示笔记的稳定视图行到要编辑的笔记的创建页面...非常简单,但是由于某种原因,它并没有显示我的笔记创建页面,仅将我带到新的干净创建页面。
所以我虽然可能是因为prepareForSegue方法..在这里您可以看到为您提供更多详细信息的问题如何创建segue从表视图推回到编辑模式?
非常感谢您在此方面的帮助。
这是我添加到NotesList表视图控制器中的2种方法:
#pragma mark - delegate
- (void) tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"noteSegue" sender:nil];
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"noteSegue"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NMNote *note = [self.notes objectAtIndex:indexPath.row];
NMCreateNotesViewController *destination = [segue destinationViewController];
destination.textField.text = note.content;
}
}
并且我确保情节提要中的segue标识符被命名为noteSegue。那么为什么它的注释起作用了...我得到了一个新的TextView而不是用注释内容填充它:/
这是我得到的错误:
谢谢!
prepareForSegue:
在当前VC而非目标上调用该方法。UIViewController类参考。您可以使用该方法获取对目标VC的引用,并在执行segue之前在其上设置变量/调用方法。
像这样调用segue:
[self performSegueWithIdentifier:@"NAMEOFSEGUE" sender:nil];
然后,您可以像这样准备目标VC:
#import "NMCreateNotesViewController.h"
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"NAMEOFSEGUE"]) {
NMCreateNotesViewController *destination = [segue destinationViewController];
[destination createNote]; /* or something similar */
}
}
编辑:
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NMNote *note = [self.notes objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"noteSegue" sender:note];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"NAMEOFSEGUE"]) {
NMCreateNotesViewController *destination = [segue destinationViewController];
NMnote *note = (NMNote*) sender;
destination.textField.text = note.content;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句