根据segue重定向到不同的ViewControllers

时间:2014-06-30 06:21:24

标签: ios iphone objective-c uitableview

我是iOS及其开发的新手。我有tableview和两个单元格。当我按下想要重定向到viewController对象的单元格时。我想根据segue标识符来做。请在代码下面找到我用过。

   #import "Essentialinfocontroller.h"

    @interface Essentialinfocontroller ()
    {

        NSMutableArray * titlearray;

        NSMutableArray * subtitilearray;

    }
    @end

    @implementation Essentialinfocontroller

    @synthesize info;


    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil\];
        if (self) {

        }
        return self;
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.info.delegate=self;
        self.info.dataSource=self;

        titlearray =[[NSMutableArray alloc]initWithObjects:@"Custom",@"Department Of Immigration",@"Foriegn Currency Regulations",@"Sri Lankan Embassies" ,@"Sri Lankan Visa",@"When You Are There..", nil];

    }

    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    {

        return 1;

    }

    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    {

        return [titlearray count];

    }

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    {

        static NSString * cellidentifier=@"cell";

        UITableViewCell * cell= [info dequeueReusableCellWithIdentifier:cellidentifier forIndexPath:indexPath];



        cell.textLabel.text =[titlearray objectAtIndex:indexPath.row];

        return cell;



    }

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if([segue.identifier isEqualToString:@"custom"])
        {
            //redirected to Viewcontroller custome
        }
        else if([segue.identifier isEqualToString:@"depart"])
        {
            // redirected to viewController Department
        }
    }

@end][1]

My story Board

1 个答案:

答案 0 :(得分:1)

在您想要转换到新控制器的位置使用此方法。

[self performSegueWithIdentifier:@"yourSegueIdentifierName" sender:nil];

一旦遇到上述语句并且如prepareForSegue方法中所述,此方法将自动触发prepareForSegue方法,您正在使用if..else检查segue标识符名称,以便做到这一点。

请按照以下步骤操作:

  1. 使用didSelectRowAtIndexPath委托方法检查tableView中的哪一行被单击。这是为了知道我们将为特定行使用哪个segue标识符。现在你有了selectedRow索引。所以我们进入下一步。
  2. 在知道单击哪一行后,使用此功能通过源控制器中的segue Identifer重定向到相应的控制器。

    [self performSegueWithIdentifier:@“yourSegueIdentifierName”sender:nil];

  3. 调用performSegueWithIdentifier后,prepareForSegue会立即调用{{1}}。就像你现在所做的那样,你可以检查segue标识符并使​​用你自己的逻辑,如果是...... else代码。