在检查用户名和密码是否正确之后,我试图以编程方式在我的代码中触发segue(由于调试,此时只是用户名).当在语句之外时,segue会激活,并且调试表明用户名是'test',这是条件正在查找的内容,但是segue不会触发.
- (IBAction)loginButton:(id)sender {
NSString *username = usernameField.text;
NSString *password = passwordField.text;
if(username == @"test")
{
[self performSegueWithIdentifier:@"loginSegue" sender:sender];
}
else{
NSLog(@"NOT PERFORMING SEGUE! USERNAME: %@ -- PASSWORD: %@", username, password);
}
}
Run Code Online (Sandbox Code Playgroud) 我想为iOS应用程序构建一个设置界面.
注意 - 这些设置通常会更改,所以我更喜欢设置界面应用程序而不是设置包
我的想法
问题:
在模态视图中,似乎没有出现导航栏.我需要导航栏,以便我可以在其上创建一个"保存"按钮?
为了解决上面提到的问题,我创建了一个UIViewController来管理设置视图,并在UIViewController的视图下添加了一个导航栏和一个表视图(使用UITableViewController使导航栏与单元格一起滚动)
但是创建一个UIViewController不允许我创建一个包含静态内容的表
问题:
我正在学习构建简单iOS应用程序的教程.
最后它说我现在应该可以运行该应用程序了.但是,当我运行它并点击主uitableview中的一行时,它只是突出显示蓝色但不会偏离细节uitableview.
所以我在prepareForSegue:sender:方法中放了一个NSLog,它永远不会被调用.
另外,我不记得在按下一行时告诉Xcode(在故事板和任何代码中都没有).
我是否错过了教程的一部分或教程是否遗漏了什么?或者我在某个地方犯了一个愚蠢的错误?请帮我弄清楚如何激活segue.
提前致谢!
我有一个登录屏幕,第二个屏幕和第三个屏幕.我想在第三个屏幕中有一个按钮返回登录屏幕并删除第二个和第三个屏幕的当前实例.
我所拥有的是从登录到第二个屏幕的推送segue和从第二个到第三个屏幕的推送segue.我在第三个屏幕的导航栏上放了一个条形按钮项目,并附加了一个模式segue返回到登录屏幕.点击后我得到一个空的新登录屏幕,这只是创建一个新的实例吗?如何删除以前的实例以便保存内存?在Android中,我们将标志传递给FLAG_ACTIVITY_CLEAR_TOP清除其他活动的意图.在iOS中有类似的东西吗?
从一个动态的tableView"CardSets"我做一个segue到一个静态的tableView"AddCardSet"来输入一些数据.在成功的save()方法之后,我想将用户发送回初始的tableView"CardSets".我怎样才能做到这一点?
我是否必须在save按钮上设置segue ?或者有更短的方式?
使用此命令执行了几个月的简单segue:
[self performSegueWithIdentifier:@"ExpirationWarningSegue" sender:self];
Run Code Online (Sandbox Code Playgroud)
现在产生这个错误:
***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法执行带有标识符'expirationWarningSegue'的segue.segue必须有一个performHandler,或者它必须覆盖-perform.
什么?这是一个骗局.我UIViewController在故事板中命令 - 从一个拖到另一个.我不是为此编写代码.segue在故事板中使用此确切标识符定义.
为什么现在我已经升级到xcode 7时曾经工作得很好?
所以这真令人沮丧。我正在尝试使用单例传递字符串变量,但它没有在第二个UIViewController上传递。
Singleton.swift:
class CardName {
var cardName : String = ""
class var sharedInstance : CardName {
struct Static {
static let instance : CardName = CardName()
}
return Static.instance
}
var returnedCardName : String {
get{
return self.cardName
}
set {
self.cardName = newValue
}
}}
Run Code Online (Sandbox Code Playgroud)
查看1:
CardName.sharedInstance.returnedCardName = "Single pass test"
print("Shared instance name set: \(CardName.sharedInstance.returnedCardName)")
Run Code Online (Sandbox Code Playgroud)
print()成功显示了正确设置的字符串。
查看2:
let card_name_shared = CardName.sharedInstance
override func viewDidLoad() {
super.viewDidLoad()
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
card_Name = card_name_shared.returnedCardName
print("Passed Card Name: \(self.card_name_shared.returnedCardName)")
}
Run Code Online (Sandbox Code Playgroud)
查看2个print()结果: …
我想从一个viewController跳到另一个.我一直在使用performSegueWithIdentifier,它适用于所有viewControllers期望的一个.每次应用程序尝试执行segue时都会显示以下错误:
2016-08-21 15:04:29.170入职[44226:2490189]***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'Receiver()没有标识符'gogo''的segue
我在segue中的标识符是"gogo".在我的代码中我使用:
self.performSegueWithIdentifier("gogo", sender: self)
Run Code Online (Sandbox Code Playgroud)
如果你仔细查看错误消息,我注意到Xcode在标识符中添加了一个撇号.打印'gogo''而不是'gogo'.为什么会这样?
我使用SEGUE从一个发送数据viewController到destinationViewController.我设置按钮并使用push segue连接到下一个视图控制器.在第一个视图中,我设置了一个布尔值来检查图像是否为空.如果有空,则会弹出警报提醒用户.如果成功,它会将图像发送到下一个视图控制器.
虽然我可以传输图像并弹出警报,但如果有空的话,它也会跳转到下一个视图控制器.此外,跳转到下一个视图控制器后,而不是在第一个视图控制器中弹出警报
现在,这是代码
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if Jumpsuit.isHidden == false && self.Hair.image != nil && self.Jumpsuit.image != nil && self.Shoes.image != nil {
let DestViewController : ChooseBGViewController = segue.destination as! ChooseBGViewController
DestViewController.imgHair = Hair.image
DestViewController.imgJumpsuit = Jumpsuit.image
DestViewController.imgShoes = Shoes.image
DestViewController.dressingtype = 1
} else if Jumpsuit.isHidden == false && self.Hair.image == nil || self.Jumpsuit.image == nil || self.Shoes.image == nil {
let alert = UIAlertView()
alert.title = "No Image" …Run Code Online (Sandbox Code Playgroud) 长话短说,我的segue无法执行到我已创建的下一个控制器.很多帮助将不胜感激.
override func viewDidLoad() {
super.viewDidLoad()
var returnValue: Int = UserDefaults.standard.integer(forKey: "quiz1Validation")
if (returnValue == 1)
{
performSegue(withIdentifier: "completed", sender: self)
}
else {
var returnValue: Int = UserDefaults.standard.integer(forKey: "userScore")
scorelabel.text = "Score:\(returnValue)"
RandomQuestions()
}
}
Run Code Online (Sandbox Code Playgroud) segue ×10
ios ×9
swift ×5
objective-c ×3
uitableview ×2
xcode ×2
singleton ×1
storyboard ×1
swift3 ×1