我正在使用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)发送者。
答案 0 :(得分:3)
Hey Fabio Cardoso有两种类型的Segues
在trigger less segue中,您只需直接从一个ViewController拖动到另一个ViewController。你没有提到你希望塞姬做什么行动。为此,您需要像上面一样创建segue标识符。并在您的代码中调用以下行。
[self performSegueWithIdentifier:@“YOUR_IDENTIFIER”sender:self];
在segue的第二种方式中,您可以直接按Ctrl +从按钮拖动到另一个ViewController。所以不需要为此编写任何代码。当您单击该按钮时,它将执行推送,模型或自定义segue您在故事板中选择的内容。
在Source ViewController中调用以下方法执行的segue时。在这里,您可以编写自己的代码,将值从第一个ViewController传递给另一个或任何其他东西。
- (void)prepareForSegue:(UIStoryboardSegue *)segue发件人:(id)发件人
如果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
答案 1 :(得分:0)
我用这个简单的界限解决了我的问题:
[self performSegueWithIdentifier:@"begin" sender:self];