iOS 学习笔记 五 (2015.03.17)使用storyBoard进行tableview的跳转

方法一: 点击tableviewCell后,按住ctrl键拖拽至想要跳转的新的界面。这样跳转的结果是,点击tableview中的任何一行都会跳转到新的界面。可以通过控制cell的 属性 userInteractionEnabled = NO,来实现不跳转。

方法二:点击原来界面的controller后,按住ctrl键,拖拽到新的界面。这样跳转的结果是,点击tableview中的任何一行后,需要实现代理方法-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath,在其中执行方法

    [self performSegueWithIdentifier:@"segueIdentifer" sender:nil]来跳转到指定segueIdentifier的新界面。然后实现函数-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender,并且在其中为新跳转的界面初始化数据。

以下,摘自别人的博客:

Segue 的有条件跳转

一、定义一个对应UITableViewCell 的Segue,如果是UITableViewCell 在显示的时候已经确定是否可以通过Segue 跳转,则在 cellForRowAtIndexPath 方法中可以:

if(indexPath.row==)

cell.userInteractionEnabled=NO;

如此,第四行单元不能跳转(由于不响应用户交互事件)。

二、定义一个对应ViewController 的Segue,在 didSelectRowAtIndexPath 方法中根据条件调用 performSegueWithIdentifier

三、定义一个定制的 Segue:

@interface MyCustomSegue : UIStoryboardSegue 
@end

重载以下方法:

@implementation MyCustomSegue
- (id)initWithIdentifier:(NSString *)identifier source:(UIViewController *)source destination:(UIViewController *)destination

{
    UIStoryboard *storyBoard= [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"bundle:nil];
    UIViewController *viewController = [storyBoard 
    instantiateViewControllerWithIdentifier:@"testIdentifier"]; 
    // MyViewController* viewController= [[MyViewController alloc]initWithNibName:@"MyViewController" bundle:nil]; 
    return [super initWithIdentifier:identifier source:source destination:viewController];
}

- (void)perform 

{
    // if either source or destination is nil, stop
    if (nil == self.sourceViewController || nil == self.destinationViewController) 
       return;
    // return; //No Action. Segue will be cancelled
    UINavigationController *ctrl = [self.sourceViewController navigationController];
    [ctrl pushViewController:self.destinationViewController animated:YES];
}

上一篇:Angular 快速入门


下一篇:Web 在线文件管理器学习笔记与总结(1)初始文件以及获取首层目录信息