TableView这个控件在iOS的开发中非常的常见,他可以较好的展示一个层级结构。这里主要介绍,在点击某个条目的时候,如何进行跳转的下一个界面。以下是官方的关于这个跳转如何去实现,和如何去传递数据的过程。
Storyboards make it easy to pass data from one scene to another via thePRepareForSegue:sender: method of the UIViewControllerclass. This methodiscalled when the first scene (the source)isabout to transition to the next scene (the destination). The source view controller can implement prepareForSegue:sender: to perform setup tasks, suchaspassing information to the destination view controller about what it should displayinits table view. Listing3-1shows one implementation ofthismethod.
Storyboards利用func prepareForSegue(segue:UIStoryboardSegue, sender:AnyObject!)将数据从一个界面传输到另外一个界面。这个函数在源界面切换到目标界面的时候会调用。所以在源View Controller中可以重载func prepareForSegue(segue:UIStoryboardSegue, sender:AnyObject!)这个方法,在该方法内完成将数据传送到目的View Controller。下面就是这个函数一般的实现方式。
(Objective-C)
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{if([[segue identifier] isEqualToString:@"ShowDetails"]) { MyDetailViewController *detailViewController =[segue destinationViewController];
NSIndexPath*indexPath =[self.tableView indexPathForSelectedRow];
detailViewController.data=[self.dataController
objectInListAtIndex:indexPath.row];
} }
(Swift)
func prepareForSegue(segue:UIStoryboardSegue, sender:AnyObject!) {
if(segue.identifier =="ShowDetails"){
var detailViewController:MyDetailViewController ! = segue.destinationViewControlleras MyDetailViewController
var index =tableView.indexPathForSelectedRow()
detailViewController.data = dataController[index!.row]
}
}
A segue represents a one-way transition from a source scene to a destination scene. One of the consequences ofthisdesignisthat you can use a segue to pass data to a destination, but you can’t use a segue to send data from a destination to its source. To solvethisproblem, you create adelegateprotocol that declares methods that the destination view controller calls when it needs to pass back some data.
Segue是条从源界面到目标界面的一条路。你可以通过Segue将数据从源界面->目标界面。
以上的过程是在tableViewCell与DetailView界面建立Segue连接的情况下,并且设置了Segue的identifer。
Segue是完全在Storyboard可以拖拽建立,比较简单,关于如何建立Segue请网上查找下资料。