标签: segue

推送没有动画的segue

我正在编写一个基于故事板的iPhone应用程序并正在进行状态恢复.当正常执行segues时,我希望让它们具有动画效果,但是当我恢复导航层次结构的几个级别时,我只想让最后一个segue动画化.除了设置两组segue之外 - 一组使用普通push segue,另一组使用自定义非动画push segue - 有没有办法实现我想要做的事情?

animation cocoa-touch uikit uistoryboard segue

13
推荐指数
1
解决办法
9675
查看次数

在Interface Builder中定义"通用"segue

我理解如何通过右键单击一个控件在XCode 4.2中创建一个segue,让我们说一个按钮,并将其拖动到故事板中的视图控制器.

我想要做的是创建一个不依赖于控件的segue,并且必须以编程方式调用,以便我可以执行以下操作:

- (void)viewDidLoad
{
    if (condition) 
    {
        [self performSegueWithIdentifier: @"identifier" sender: self];
    }
}
Run Code Online (Sandbox Code Playgroud)

同时仍然在Interface Builder中定义"标识符"segue.这可能吗?

iphone xcode objective-c segue

13
推荐指数
1
解决办法
3292
查看次数

当选择UITableView行时,是否调用prepareForSegue?

我使用NSFetchedResultsController设置了一个UITableView,它显示了许多原型UITableViewCells.我已经从我的UITableViewCell连接到我的DetailViewController的push segue.

在我的TableViewController中,我实现了两个:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    NSLog(@"%s", __PRETTY_FUNCTION__);
}
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序并单击tableView中的一行时,我的应用程序只调用:

[TableViewController tableView:didSelectRowAtIndexPath:]
[TableViewController tableView:didSelectRowAtIndexPath:]
[TableViewController tableView:didSelectRowAtIndexPath:]
Run Code Online (Sandbox Code Playgroud)

如果我删除segue并将其重新连接到DetailViewController的UIBarButtonItem,那么segue被正确调用,任何人都可以想到我错过了什么?

编辑:

添加:

- (IBAction)tester:(id)sender {
    [self performSegueWithIdentifier:@"SEGTEST" sender:nil];
}
Run Code Online (Sandbox Code Playgroud)

并将它连接到一个名为"tester"的UIButtonBarItem并且它可以正常工作,当我从UITableViewCell链接到控制器时,我无法将它连接起来.

iphone objective-c uitableview segue

13
推荐指数
2
解决办法
1万
查看次数

NSInvalidArgumentException原因Receiver没有带标识符的segue

我有问题,我一直坐着.我有一个UIViewController List和一个UIViewController Login.在Login我有一个按钮"Done",同一个UIViewController上的另一个隐藏按钮有一个segue到List(Type:push).我在xcode的接口构建器中为它命名了一个名为"LoginToList"的标识符.现在从另一个类(一个运行的类Login是活动控制器)我调用:

[[Login sharedLogin] performSegueWithIdentifier:@"LoginToList"];
Run Code Online (Sandbox Code Playgroud)

所述Login类显然有与标识符的SEGUE"LoginToList"

但我一直在:

 'NSInvalidArgumentException', reason: 'Receiver (<Login: 0x6d79d90>) has no segue with identifier 'LoginToList''
Run Code Online (Sandbox Code Playgroud)

+ (id) sharedLogin看起来像这样:

+ (id) sharedLogin {
    static Login *sharedLogin = nil;

    @synchronized(self) {
        if (sharedLogin == nil) {
            sharedLogin = [[self alloc] init];
        }

        return sharedLogin;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人知道为什么会这么说,我会很高兴听到它!:D我不知道我是否遗漏了一些愚蠢的东西,但我无法发现它:(

编辑:我已经在界面生成器中创建了一个segue(ctrl +点击拖动LoginList),使用UIViewControllers自己(Login&List).然后我命名了segue "LoginToList",换句话说我给了它标识符.我点击了segue,在右上角有一个我用过的"Identifier"字段.

我仍然得到错误说Login没有带标识符的segue …

xcode objective-c segue uistoryboardsegue

13
推荐指数
1
解决办法
8166
查看次数

我如何使用performSegueWithIdentifier:sender:?

我是一个新的iOS开发人员,我目前正在为iPhone构建游戏,我正在使用Objective-C编写它.

这个问题可能很容易回答,但我无法在其他任何地方找到它.我在这个应用程序中使用故事板,当用户按下按钮转到下一个故事板时,我正在使用它们,但是当segue需要自动发生时,我完全难以理解如何实现这一点.

我想在启动应用程序时显示徽标大约五秒钟,然后应显示主菜单.我试图使用performSegueWithIdentifier:sender:来实现这一点,但是我浏览了苹果的文档并且它并没有真正回答我关于如何使用这个方法的问题.

我知道这个方法用于什么,而不是我需要输入什么代码才能正确使用它.

此外,如果我使用完全错误的方法,或者有一种更容易的方法来实现我想要做的事情,那将非常感激.任何帮助都很有用.提前致谢

iphone objective-c storyboard ios segue

13
推荐指数
1
解决办法
6万
查看次数

从主线程执行segue是否可以?

从主线程执行segue是否可以?

user.saveInBackgroundWithBlock { (success: Bool!, error: NSError!) -> Void in
 if success == false || error != nil {
  println(error)
 } else {
  self.performSegueWithIdentifier("jumpToMessagesViewController", sender: self)
 }
}
Run Code Online (Sandbox Code Playgroud)

或者这样做的正确方法是什么?

multithreading segue swift

13
推荐指数
1
解决办法
3367
查看次数

禁用segue动画

我想在我的故事板中显示(例如推送)segues,以连接我的viewcontrollers和我的导航控制器.然后,viewcontrollers上的导航栏将正确显示.例如:使用show detail或present modaly,导航栏将消失

但我不想要segue动画.Xcode发出如下警告:"在iOS 9.0之前禁用segue动画"

我想要iOS 7.0或8.0的部署目标

我怎么解决这个问题?

提前致谢.

ios uistoryboard segue uistoryboardsegue swift

13
推荐指数
3
解决办法
9500
查看次数

ios segue"取消"

根据XML返回,我不希望当前segue在UIButton touch上执行.

我知道我可以选择segue我想要表演的内容,但是如何让我segue 不能表演?或者至少不执行任何可用的segues

ios segue

12
推荐指数
1
解决办法
8905
查看次数

委托vs Unwind Segue将数据传递给父场景

从iOS 6开始,展开的segue可用于向上导航场景层次结构.我试图决定将数据传递给父视图控制器的更清洁/更好/首选/更可维护的方法.从技术角度来看,有一些问题可以解决这个问题(例如"如果我有一个放松,我还需要一个代表")但我找不到太多可以解决利弊的问题.

选项1:使用代表.

  • 通过传递父视图控制器作为遵守协议的委托来完成.
    • Child调用协议方法返回数据.
    • 如果Parent需要进行数据验证,则返回值/ dict以允许子进程处理错误.
  • 开销:协议定义和父级中的一种方法(用于数据验证和接收).

选项2:使用展开segue

  • 通过调用孩子的unwind segue来完成.
    • Child通过拖动按钮或故事板本身在其场景中添加segue Exit并命名segue以便它可以与performSegueWithIdentifier:sender
    • 父实现returnFromSegueName(链接到该segue的用户命名方法)从子进程中获取数据.
    • 数据验证虽然只能通过实施来实现 canPerformUnwindSegueAction:fromViewController:withSender
      • 数据验证失败将需要Child上的另一个属性,因为此方法仅接受BOOL作为返回值.
  • 开销:两种方法,一个额外的属性,以及Storyboard shenanigans.

总的来说,代表们感觉更干净,但也许过时了.我倾向于朝那个方向倾斜吗?

delegates objective-c ios segue

12
推荐指数
2
解决办法
5469
查看次数

添加了导航栏但没有后退按钮?

我创建了一个表视图,然后从那里开始说用户按下了一个单元格,它将转到detailItemView,但现在唯一的问题是每当用户在detailItemView中时,没有后退按钮,即使我已经嵌入了导航控制器

这是用户按下单元格后将执行segue的代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    // Get the new view controller using [segue destinationViewController].
    var nav = segue.destinationViewController as! UINavigationController
    var detailScene = nav.topViewController as! DetailViewController


    // Pass the selected object to the destination view controller.
    if let indexPath = self.tableView.indexPathForSelectedRow() {
        let row = Int(indexPath.row)
        detailScene.currentObject = objects?[row] as? PFObject
    }
}
Run Code Online (Sandbox Code Playgroud)

故事板的屏幕截图:

在此输入图像描述

编辑截图

在此输入图像描述

我试着在下面做出答案,但仍然没有后退按钮

另一个截图,detailView控制器没有后退按钮

在此输入图像描述

uitableview ios segue uistoryboardsegue swift

12
推荐指数
1
解决办法
2万
查看次数