使用故事板这很容易.您只需将操作拖动到"退出"即可.但是我该如何从我的代码中调用它呢?
他们之间有什么区别?我找不到任何关于它的文件.曾经有一些我在谷歌搜索中找到的,但它现在已经消失了:https://developer.apple.com/library/ios/recipes/xcode_help-interface_builder/articles-storyboard/StoryboardSegue.html
是否可以取消prepareForSegue:方法中的segue ?
我想在segue之前执行一些检查,如果条件不为真(在这种情况下,如果某些UITextField是空的),则显示错误消息而不是执行segue.
我有一个共同点UIViewController,我所有的UIViewsControllers扩展都重用了一些常见的操作.
我想在这个"Common"上设置一个segue,UIViewController以便所有其他的UIViewControllers继承.
我试图找出如何以编程方式执行此操作.
我想这个问题也可能是如何在没有进入故事板的情况下segue为我所有人设置一个UIViewControllers并且手动完成.
我通过点击按钮将用户发送到页面.这个页面是一个UITableViewController.
现在,如果用户点击一个单元格,我想将他推回到上一页.
我想过类似的东西,self.performSegue("back")....但这似乎是一个坏主意.
这样做的正确方法是什么?
我正在创建一个使用Facebook SDK对用户进行身份验证的应用.我试图在一个单独的类中巩固facebook逻辑.这是代码(为简单起见而剥离):
import Foundation
class FBManager {
class func fbSessionStateChane(fbSession:FBSession!, fbSessionState:FBSessionState, error:NSError?){
//... handling all session states
FBRequestConnection.startForMeWithCompletionHandler { (conn: FBRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
println("Logged in user: \n\(result)");
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let loggedInView: UserViewController = storyboard.instantiateViewControllerWithIdentifier("loggedInView") as UserViewController
loggedInView.result = result;
//todo: segue to the next view???
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的类方法来检查会话状态更改,它工作正常.
问:获得用户数据后,如何从此自定义类中转到下一个视图?
编辑:只是为了清楚,我在故事板上有一个带标识符的segue,我正试图找到一种方法来从一个不是视图控制器的类执行一个segue
在我的应用程序中,我有一个按编程方式执行segue的按钮:
- (void)myButtonMethod
{
//execute segue programmatically
[self performSegueWithIdentifier: @"MySegue" sender: self];
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以引用目标视图并传递一些参数.
我知道在prepareForSegue方法中,我可以用:来引用它myDestinationViewController *vc = [segue destinationViewController];,但我不知道如何以编程方式执行segue.
你有什么想法?
谢谢,亚萨
更新:
对不起这个问题我很抱歉!我只是发现,即使以编程prepareForSegue方式调用segue,也会调用该方法,因此可以以相同的常规方式传递参数.
我有一个设置有工作登录和主视图控制器的故事板,后者是用户在登录成功时导航到的视图控制器.我的目标是在验证(存储在钥匙串中)成功时立即显示主视图控制器,如果验证失败则显示登录视图控制器.基本上,我想在AppDelegate中执行此操作:
// url request & response work fine, assume success is a BOOL here
// that indicates whether login was successful or not
if (success) {
// 'push' main view controller
} else {
// 'push' login view controller
}
Run Code Online (Sandbox Code Playgroud)
我知道方法performSegueWithIdentifier:但是这个方法是UIViewController的实例方法,所以不能从AppDelegate中调用.如何使用我现有的故事板来做到这一点?
编辑:
故事板的初始视图控制器现在是一个没有连接任何东西的导航控制器.我使用setRootViewController:区别因为MainIdentifier是一个UITabBarController.那么这就是我的线条:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
BOOL isLoggedIn = ...; // got from server response
NSString *segueId = isLoggedIn ? @"MainIdentifier" : @"LoginIdentifier";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:segueId];
if (isLoggedIn) { …Run Code Online (Sandbox Code Playgroud) 我正在使用正常的故事板并在xcode中推送segues,但是我想要让segues只出现在下一个视图中,而不是滑动下一个视图(就像当你使用标签栏而下一个视图出现时).
有一个很简单的方法可以让普通的推送段只是"出现"而不是"滑动",而不需要添加自定义段吗?
一切都工作得很好,我只想删除视图之间的幻灯片动画.
当我在主 - 细节导航控制器中的父控制器和子控制器之间来回导航时,我看到顶部导航栏右侧的阴影.它在我升级到Xcode 5.1之后开始.感觉粗糙,分散注意力.我怎么能摆脱它?
segue ×10
ios ×7
objective-c ×3
storyboard ×3
swift ×2
animation ×1
cocoa-touch ×1
facebook ×1
ios6 ×1
ios8 ×1
iphone ×1
parameters ×1
view ×1
xcode ×1
xcode6 ×1