我正在编写一个基于故事板的iPhone应用程序并正在进行状态恢复.当正常执行segues时,我希望让它们具有动画效果,但是当我恢复导航层次结构的几个级别时,我只想让最后一个segue动画化.除了设置两组segue之外 - 一组使用普通push segue,另一组使用自定义非动画push segue - 有没有办法实现我想要做的事情?
我理解如何通过右键单击一个控件在XCode 4.2中创建一个segue,让我们说一个按钮,并将其拖动到故事板中的视图控制器.
我想要做的是创建一个不依赖于控件的segue,并且必须以编程方式调用,以便我可以执行以下操作:
- (void)viewDidLoad
{
if (condition)
{
[self performSegueWithIdentifier: @"identifier" sender: self];
}
}
Run Code Online (Sandbox Code Playgroud)
同时仍然在Interface Builder中定义"标识符"segue.这可能吗?
我使用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链接到控制器时,我无法将它连接起来.
我有问题,我一直坐着.我有一个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 +点击拖动Login到List),使用UIViewControllers自己(Login&List).然后我命名了segue "LoginToList",换句话说我给了它标识符.我点击了segue,在右上角有一个我用过的"Identifier"字段.
我仍然得到错误说Login没有带标识符的segue …
我是一个新的iOS开发人员,我目前正在为iPhone构建游戏,我正在使用Objective-C编写它.
这个问题可能很容易回答,但我无法在其他任何地方找到它.我在这个应用程序中使用故事板,当用户按下按钮转到下一个故事板时,我正在使用它们,但是当segue需要自动发生时,我完全难以理解如何实现这一点.
我想在启动应用程序时显示徽标大约五秒钟,然后应显示主菜单.我试图使用performSegueWithIdentifier:sender:来实现这一点,但是我浏览了苹果的文档并且它并没有真正回答我关于如何使用这个方法的问题.
我知道这个方法用于什么,而不是我需要输入什么代码才能正确使用它.
此外,如果我使用完全错误的方法,或者有一种更容易的方法来实现我想要做的事情,那将非常感激.任何帮助都很有用.提前致谢
从主线程执行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)
或者这样做的正确方法是什么?
我想在我的故事板中显示(例如推送)segues,以连接我的viewcontrollers和我的导航控制器.然后,viewcontrollers上的导航栏将正确显示.例如:使用show detail或present modaly,导航栏将消失
但我不想要segue动画.Xcode发出如下警告:"在iOS 9.0之前禁用segue动画"
我想要iOS 7.0或8.0的部署目标
我怎么解决这个问题?
提前致谢.
根据XML返回,我不希望当前segue在UIButton touch上执行.
我知道我可以选择segue我想要表演的内容,但是如何让我segue 不能表演?或者至少不执行任何可用的segues?
从iOS 6开始,展开的segue可用于向上导航场景层次结构.我试图决定将数据传递给父视图控制器的更清洁/更好/首选/更可维护的方法.从技术角度来看,有一些问题可以解决这个问题(例如"如果我有一个放松,我还需要一个代表")但我找不到太多可以解决利弊的问题.
选项1:使用代表.
选项2:使用展开segue
Exit并命名segue以便它可以与performSegueWithIdentifier:senderreturnFromSegueName(链接到该segue的用户命名方法)从子进程中获取数据.canPerformUnwindSegueAction:fromViewController:withSender
总的来说,代表们感觉更干净,但也许过时了.我倾向于朝那个方向倾斜吗?
我创建了一个表视图,然后从那里开始说用户按下了一个单元格,它将转到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控制器没有后退按钮

segue ×10
ios ×5
objective-c ×5
iphone ×3
swift ×3
uistoryboard ×2
uitableview ×2
xcode ×2
animation ×1
cocoa-touch ×1
delegates ×1
storyboard ×1
uikit ×1