0

我正在使用Facebook SDK 3.1,我的登录系统是好的,登录后我想去其他的ViewController。我同时连接了一个 segue 和标识符,但现在我不知道如何实现它。

在这里,在此之后:

if (appDelegate.session.isOpen) {
    [self.buttonLoginLogout setTitle:@"Log out" forState:UIControlStateNormal];        
    [self.textNoteOrLink setText:[NSString stringWithFormat:@"https://graph.facebook.com/me/friends?access_token=%@", appDelegate.session.accessTokenData.accessToken]];
}

在我的 TableViewCell 示例中,我像这样使用它:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"test"]) {
        NSIndexPath *selectedIndexPath = self.tableView.indexPathForSelectedRow;
        RestauranteDetalhesViewController *destViewController = segue.destinationViewController;
        destViewController.idRest =[bd.idrestauracao objectAtIndex:selectedIndexPath.row];
}

但是在这里我没有索引路径可以提供给(id)发件人。

4

2 回答 2

3

嘿 Fabio Cardoso 有两种类型的 Segue

  1. 触发更少的 segue 和
  2. 触发转场

在 trigger less segue 中,您只需直接从一个 ViewController 拖动到另一个。你没有提到你希望 Segue 完成哪个动作。为此,您需要像上面那样创建 segue 标识符。并在您的代码中调用以下行。

[self performSegueWithIdentifier:@"YOUR_IDENTIFIER" sender:self];

在第二种方式中,您直接 Ctrl+从一个按钮拖动到另一个 ViewController。所以不需要为此编写任何代码。当您单击该按钮时,它将执行 Push、Model 或自定义 segue 您在情节提要中选择的内容。

如果在 Source ViewController 中调用以下方法执行的 segue。在这里,您可以编写自己的代码来将值从第一个 ViewController 传递给另一个或任何其他东西。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

如果您的 ViewController 中有多个 segue,则将使用标识符。您可以像这样使用标识符

if ([segue.identifier isEqualToString:@"YOUR_IDENTIFIER"])

注意:Segue 只是一种方式,所以如果您从第一个 ViewController 到另一个创建 segue,并且如果您想返回(在模型操作的情况下),您必须为第二个 ViewController 编写委托方法并单击按钮操作调用

    **FirstViewController.h**

@interface FirstViewController : UIViewController <SecondViewControllerDelegate>
{

}

- (IBAction) buttonTapped:(id)sender;

**FirstViewController.m**

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"YOUR_IDENTIFIER"])
    {
        SecondViewController *svc_obj = segue.destinationViewController;
        svc_obj.delegate = self;
    }
}

- (void) buttonTapped:(id)sender
{
    [self performSegueWithIdentifier:@"YOUR_IDENTIFIER" sender:self];
}

- (void) secondViewControllerDidCancel: (SecondViewController *) controller
{
    [controller dismissViewControllerAnimated:YES completion:nil];
}

**SecondViewController.h**

@class SecondViewController;

@protocol SecondViewControllerDelegate <NSObject>

- (void) secondViewControllerDidCancel: (SecondViewController *) controller;

@end

@interface SecondViewController : UIViewController
{

}
@property (nonatomic, weak) id <SecondViewControllerDelegate> delegate;

- (IBAction)cancelButtonTapped:(id)sender;

**SecondViewController.m**

- (IBAction)cancelButtonTapped:(id)sender
{
    [self.delegate secondViewControllerDidCancel:self];
}

@end
于 2013-03-06T05:04:32.673 回答
0

我用这条简单的线解决了我的问题:

 [self performSegueWithIdentifier:@"begin" sender:self];   
于 2013-03-04T15:49:57.130 回答