我使用新的iOS 5 Utility应用程序模板创建了一个应用程序.从以前的SDK开始,我们现在必须使用故事板作为GUI(我喜欢使用它),但我想知道如何防止"Segue"将视图翻转到故事板上的下一个视图.
默认情况下,有一个按钮,当按下时会翻转到"FlipsideViewController",我想使用此按钮作为登录表单的一部分,但我需要停止故事板进入Segue,除非凭据正确.我已写入所有登录代码但无法阻止页面翻转.我认为这样做的方法实际上会阻止用户通过单击"FlipsideViewController"上的默认"完成"按钮返回.
有人可以帮忙吗?
我正在尝试捕获MapKit引脚选择选择以执行segue到此位置的详细视图,我在注释引脚中有一个属性:
#import <MapKit/MapKit.h>
@interface alrededorLocation : NSObject <MKAnnotation> {
NSString *_name;
NSString *_address;
CLLocationCoordinate2D _coordinate;
NSDictionary *additionalInfo;
}
Run Code Online (Sandbox Code Playgroud)
但是我无法捕获引脚选择以执行segue,我试图控制它 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
但我没有成功获得所选的引脚参考.
非常感谢
我有一个标签栏控制器应用程序,标签栏控制器分叉成几个"标签"视图控制器,在一个视图控制器中我想将用户重定向到另一个视图控制器.我从该选项卡视图控制器创建一个segue到目标视图控制器,并给它一个Identifer.我在"viewDidAppear"中调用"performSegueWithIdentifier"来重定向用户.
当segue是"Modal"时它工作正常,但是因为我想保留标签,我想通过"Push"调用segue.但是,一旦我将segue更改为"Push",它就不再起作用了(它不会尝试转到目标视图控制器).该应用程序没有在模拟器上崩溃,只是停留在原始选项卡视图控制器上.
我有一个segues的问题.我的UITableViewController有两个与其他UITableViewControllers的segue.segue从控制器链接到控制器,而不是从单元到控制器.
码:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
if([segue.identifier isEqualToString:@"segueOne"])
{
//implementation omitted
}
if([segue.identifier isEqualToString:@"segueTwo"])
{
//implementation omitted
}
}
Run Code Online (Sandbox Code Playgroud)
邪恶的地方:
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(self.navigationKey==1)
{
[self performSegueWithIdentifier:@"segueOne" sender:self];
}
if(self.navigationKey==2 || self.navigationKey==3)
{
[self performSegueWithIdentifier:@"segueTwo" sender:self];
}
}
Run Code Online (Sandbox Code Playgroud)
通常,导航工作.当然,问题是导航不能在首先选择的单元格上工作.任何帮助深表感谢.
我的故事板看起来像这样:

这是它的工作原理:在其.m文件中InitialSlidingViewController实例化导航VC topViewController,如下所示:
-(void)viewDidLoad {
[super viewDidLoad];
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Navigation"];
}
Run Code Online (Sandbox Code Playgroud)
导航VC实例化后,它会创建基础菜单并将其设置为underLeftVC.这是使用ECSlidingViewController.这将创建一个使用平移手势的滑动菜单,类似于Facebook.
NavigationVC的rootVC是我的ItemsCDTVC.当我点击+按钮时,它会弹出一个动作表,允许我从相机拍摄照片或从照片库中选择.但是,我希望它以模态方式转换为ManageItemVC并设置我刚刚选择/拍摄到UIImageView的图片.当我尝试呈现时,它会抛出以下错误:
Warning: Attempt to present <ManageItemViewController: 0x81d52a0> on <InitialSlidingViewController: 0x8122ce0> whose view is not in the window hierarchy!
Run Code Online (Sandbox Code Playgroud)
这是真的,因为InitialSlidingVC不在屏幕上,ItemCDTVC是,但我该如何解决这个问题呢?
我在我的故事板中设置了模态类型segue,其中包含来自底部灵活空间的标识符(当点击时,它没有做任何事情,所以我选择了它来创建视觉segue).这是我在ItemCDTVC中的segue代码:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// let's get the edited image
UIImage *image = info[UIImagePickerControllerEditedImage];
// but if for some reason we disable editing in the future, this is our safeguard
if(!image) image = info[UIImagePickerControllerOriginalImage];
if(image) {
self.pictureImageView.image = image;
[self performSegueWithIdentifier:@"addItemSegue" …Run Code Online (Sandbox Code Playgroud) objective-c uiimagepickercontroller uinavigationcontroller modalviewcontroller segue
我有一个情况在我的应用程序,我需要通过展开segue解雇一个模态视图控制器,然后就在那之后呈现一个不同的模态视图控制器.为此,我只是将调用延迟显示新视图控制器1.0秒.这可能不会一直有效,可能由于某种原因需要更长时间才能解除,第二个视图控制器将无法显示,因为正在发生转换.我刚遇到这种情况,虽然在这种情况下确实有效.记录了这个:
警告:在演示文稿正在进行时尝试演示!
我正在寻找更好的解决方案.我想知道是否有可能在第一个完全被解雇之后通过回调抛出新的视图控制器,但是没有performSegueWithIdentifier一个有完成块.
我如何解除模态视图控制器然后呈现新的控制器,始终确保不会发生冲突?
这是我目前的解决方案:
[self performSegueWithIdentifier:@"Unwind Segue" sender:self]; //dismiss modal or pushed VC
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[tabBarController performSegueWithIdentifier:@"Show New VC" sender:self]; //present new modal VC
});
Run Code Online (Sandbox Code Playgroud) 如何解除模态然后立即推送另一个视图?
我在didSelectRowAtIndexPath中添加此代码:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ChatTableViewController *chatVC = (ChatTableViewController*)[storyboard instantiateViewControllerWithIdentifier:@"chatVC"];
[self dismissViewControllerAnimated:YES completion:^{
[[self navigationController] pushViewController:chatVC animated:YES];
}];
Run Code Online (Sandbox Code Playgroud)
模态视图解散,但之后没有任何反应.有任何想法吗?
我有一个tableView.当点击/选择单元格时,单元格向下展开以显示多个资产.一个资产是文本字段.另一个是"提交"按钮.
当按下Submit按钮时,我需要从文本字段访问用户输入.我怎样才能做到这一点?
重要提示:由于已经选择/扩展了单元格,因此无法使用didSelectRowAtIndexpath.
目前我在customCell上有以下内容:
@IBAction func submitButtonPressed(sender: UIButton) {
// prepareForSegue is on mainVC
self.textString = self.textField.text
println(self.textString)
}
Run Code Online (Sandbox Code Playgroud)
在MainVC的"prepareForSegue"中,我有以下内容:
var cell : CustomCell = self.tableView.dequeueReusableCellWithIdentifier("myCell") as! CustomCell
let path = self.tableView.indexPathForSelectedRow()!
println(cell.textField.text)
self.newText = cell.textString
self.newInt = self.newText.toInt()
println(self.newText)
println(self.newInt)
Run Code Online (Sandbox Code Playgroud)
以下代码正确prints(self.textString)
然而
cell.textString,self.newText并且self.newInt始终如此nil.
知道为什么吗?
这是我自定义的transitioningDelegate:
enum CameraState {
case On
case Off
}
class CameraTransitioning: NSObject, UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate {
var state: CameraState
init(state: CameraState) {
self.state = state
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView()
let fromVC = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)
let toVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)
let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey)
let toView = transitionContext.viewForKey(UITransitionContextToViewKey)
var toViewInitialFrame = transitionContext.initialFrameForViewController(toVC!)
var fromViewFinalFrame = transitionContext.finalFrameForViewController(fromVC!)
switch self.state {
case .On:
toViewInitialFrame.origin.y = containerView!.frame.height
case .Off:
fromViewFinalFrame.origin.y = -containerView!.frame.height
}
containerView?.addSubview(toView!)
toView?.frame = toViewInitialFrame
let duration = self.transitionDuration(transitionContext)
UIView.animateWithDuration(duration, …Run Code Online (Sandbox Code Playgroud) 我正在使用故事板中的一些标准标记,每个标记都有相同的背景色。我遇到的问题是,当segue过渡快要完成时,整个框架周围都会出现像背景这样的深色阴影。

这很微弱,但足以引起问题。有人遇到过吗?
segue ×10
ios ×8
objective-c ×5
storyboard ×4
swift ×2
cocoa-touch ×1
custom-cell ×1
ios5 ×1
iphone ×1
mapkit ×1
nsindexpath ×1
tableview ×1
tabs ×1