标签: segue

以编程方式添加按钮以执行segue

我正在尝试使用代码创建一个"动态"按钮,我希望该按钮执行segue到不同的控制器.据我所知,以编程方式创建segue是不可能的,但如果创建的按钮不在我的故事板上,怎么能通过呢?

这是创建按钮的代码:

- (void)addButton:(UIView*)view inLocation:(CGPoint)point
{

    UIButton *but=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    but.frame= CGRectMake(point.x, point.y,30,30);
    [but setTitle:@"CHOOSE" forState:UIControlStateNormal];
    // The nilSymbol should call a method that will perform the segue
    [but addTarget:self action:@selector(nilSymbol) forControlEvents:UIControlEventTouchUpInside];
    [view addSubview:but];  
}
Run Code Online (Sandbox Code Playgroud)

有任何选择吗?

iphone objective-c uibutton ios segue

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

performSegueWithIdentifier:导致应用程序崩溃

我有一个在用户输入电子邮件信息后按下的按钮。我有一个警报视图,当没有输入电子邮件时会显示该视图,但如果有,我希望按钮转到另一个视图控制器。

以下代码导致我的应用程序崩溃。我不知道为什么。请帮忙。

(注意:我尝试过“sender:self]”、“sender:nil]”和“sender:sender]”,它们都使我的应用程序崩溃。)

- (IBAction)nextButtonPushed:(id)sender {

    if ([self.emailTextField.text  isEqual: @""]) {

        emailAlertView = [[UIAlertView alloc] initWithTitle:@"Missing Email" message:@"A destination email is required to send." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [emailAlertView show];
        self.nextButton.enabled = NO;
    }

    else {

        eString = self.eTextField.text;
        hString = self.hField.text;
        emailAddress = self.emailTextField.text;

        [userDefaults setObject:eString forKey:@"e"];

        [userDefaults setObject:hString forKey:@"h"];

        [userDefaults setObject:emailAddress forKey:@"email"];

        [self performSegueWithIdentifier:@"next" sender:self];
    }

}
Run Code Online (Sandbox Code Playgroud)

objective-c ios segue

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

在segue之前检查条件

我有多个segue设置但我想阻止它在满足条件时转到下一个视图控制器.我已经查看了shouldPerformSegueWithIdentifier但我不确定如何实现它,因为我正在使用多个segues?我目前的代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {


if (([[segue identifier] isEqualToString:@"push_1"]) && ([self checkForNetwork] == YES))
{


    //Pass object to next viewcontroller
    ID * object = currentID
    //go to next viewcontroller
    [[segue destinationViewController] getID:object];
      }


if ([[segue identifier] isEqualToString:@"push2"] && ([self   checkForNetwork] == YES))
{


    //Pass object to next viewcontroller
    ID * object = currentID;
    //go to next viewcontroller
    [[segue destinationViewController] getID:object];

}

if ([[segue identifier] isEqualToString:@"push3"] && ([self checkForNetwork] == YES))
{


    //Pass object to next viewcontroller
    ID * object …
Run Code Online (Sandbox Code Playgroud)

objective-c ios segue

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

Receiver没有带有标识符错误消息的segue

我正在使用xcode 7 beta和swift 2.0.我正在关注教程(youtube.com/watch?v=PKOswUE731c).

总之,我有一个有3个视图的故事板; 受保护的vc,登录vc和RegisterViewController.我设置了2个segues

使用loginView标识的protected_vc < - > login_vc的segue模式

login_vc中的按钮上的segue模式< - >使用registerView标识的RegisterViewController

我在登录vc上使用注册按钮时遇到问题.如果我单击注册按钮它会崩溃应用程序,我收到消息'Receiver (<registerLogin.RegisterViewController: 0x7f97235f6140>) has no segue with identifier 'loginView''

现在我注意到在教程中选择一个segue给出另一个下拉列表,在我的情况下我只看到push - modal -popover - replace和custom.这可能是原因吗?

或者这部分ViewController

 override func viewDidAppear(animated: Bool) {
        self.performSegueWithIdentifier("loginView", sender: self);
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

RegisterViewController的完整代码是

import UIKit

class RegisterViewController: ViewController {


    @IBOutlet weak var userEmailTextField: UITextField!

    @IBOutlet weak var userPasswordTextField: UITextField!
    @IBOutlet weak var repeatPasswordTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() …
Run Code Online (Sandbox Code Playgroud)

ios segue

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

xcode在宁静的回调中呈现segue(swift)

我是自学Swift用户并试图做一些简单的事情,但它让我很难过.我有一个简单的登记表.在提交注册项目后,我想通过segue将页面移动到"如何工作"页面,但仅当我的restful API返回成功时.这是我到目前为止所拥有的; 随时给我一个更好的方法来做这件事.所有的批评都是受欢迎的.

let myUrl = NSURL(string:"http://www.example.com/scripts/Register.php")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"

let postString = "email=\(email)&password=\(pass)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
    data, response, error in

    if (error != nil) {
        println("Error: \(error)")
        return
    }

    var err: NSError?
    var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &err) as? NSDictionary
    var showTutorial : Bool = false

    if let parseJSON = json {
        var returnValue = parseJSON["status"] as? String
        println("Status: \(returnValue)")

        var isUserRegistered: Bool = false
        if (returnValue == …
Run Code Online (Sandbox Code Playgroud)

iphone ios segue swift xcode6

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

展开segue - 当多个视图调用它时返回调用视图

我有一个视图控制器(在导航控制器中)A切换到视图控制器B,视图控制器C也切换到B(A - > B < - C).视图控制器B用于选择传递回A或C的值,但如果单击"取消"或"完成",它将使用展开segue返回仅一个控制器,以最后连接的为准.

ios segue swift unwind-segue

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

如何阻止UITableView在弹出后返回顶部单元格

我有一个充满图像的tableView.当用户点击图像(在单元格内)时,使用popover segue调用具有较大可缩放版本图像的viewController.当我解除弹出窗口并返回到我的tableView时,它会自动显示表格的顶部单元格.有没有办法阻止这种情况发生,并在调用popover之前返回上一个位置/单元格?

编辑:打电话给我使用的popover

performSegueWithIdentifier("segueToPopOver", sender: tap.view)
Run Code Online (Sandbox Code Playgroud)

解雇它我使用以下内容:

 let tmpController :UIViewController! = self.presentingViewController;


 self.dismissViewControllerAnimated(true, completion: {()->Void in
        tmpController.dismissViewControllerAnimated(true, completion: nil);
    });
Run Code Online (Sandbox Code Playgroud)

uitableview ios segue swift

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

如何在展开功能中执行segue

我有3个MVC,在这里命名为A,B,C.

A是主MVC,按钮"Menu"通过popover segue连接到B.

A还连接到C,手动显示segue.

B是一个弹出窗口MVC,按钮"Detail"连接到A,带有展开segue.

C是具有详细信息的细节MVC.

在A.的展开函数内部,我调用performSegueWithIdentifier来显示C.


预期的行为是

  • 单击B中的"详细信息"按钮
  • B消失,A出现
  • C出现了

但运行我得到的应用程序.

  • 单击B中的"详细信息"按钮
  • B消失,A出现
  • C出现了
  • C消失,A出现

C突然出现并消失,这不是我想要的.


一些额外的信息

  • 更多按钮需要Popover B.
  • A嵌入在UINavigationController中.连接A - > C而不是B - > C,用于C顶部的后退按钮.

ios uistoryboard segue uistoryboardsegue

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

在用户输入有四个字符后,如何在Swift 3中调用方法准备?

我有以下方法:

@IBAction func postcodeTextfieldDidChanged(_ sender: UITextField) {

        if (postcodeTextField.text?.characters.count == 4) {
            self.postcode = postcodeTextField.text
            postcodeHas4Chars = true
        } else {
            postcodeHas4Chars = false
        }
    }
Run Code Online (Sandbox Code Playgroud)

而准备方法:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "CoffeeShopListWithPostcode" {
            if (postcodeHas4Chars == true) {
                if let list = segue.destination as? CoffeeShopListVC {
                    list.postcode = postcode
                } else {
                    print("Data NOT Passed!")
                }
            }
        } else { print("Id doesnt match with Storyboard segue Id")
        }
    }
Run Code Online (Sandbox Code Playgroud)

代码工作,我可以将邮政编码发送到下一个ViewController,但是如何更改代码以在第四次输入后自动调用该方法?此时,用户必须手动退出输入才能执行.

ios segue swift swift3

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

同一视图控制器加载两次

我已经阅读了有关此问题的几篇文章,但都没有解决我的问题。

我正在编写一个应用程序,我必须单击一个按钮(“准备”)以转到以下ViewController。单击该按钮时,它还会在两个视图控制器之间传递数据。

问题是,当我单击按钮时,以下ViewController加载两次。因此,如果我想返回,则必须返回两个相同的ViewController。

我已经检查了segue,类名和文件名,但没有任何修复方法。
我还创建了一个新项目,并从一开始就重写了所有代码,但最后仍然无法正常工作。

但是,我注意到在添加prepare(forSegue :)函数和performSegue函数时出现了问题。没有它,ViewController只会加载一次。但是,当然,没有它我就无法在视图之间传递数据。

这是我的两个视图的屏幕快照以及两个函数的代码:

第一视图
第二视图

//    Prepare the segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "prepareSegue" {
        let timerViewController = segue.destination as! CountdownViewController
        timerViewController.timeInterval1 = waitingTime
        timerViewController.timeInterval2 = shootingTime
        timerViewController.lastSeconds = lastSeconds
        timerViewController.currentTimeInterval = waitingTime
    }
}

//    Prepare the timer when the button is pushed
@IBAction func prepareTimer(_ sender: Any) {
    performSegue(withIdentifier: "prepareSegue", sender: self)
}
Run Code Online (Sandbox Code Playgroud)

viewdidload viewcontroller ios segue swift

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