有条件地触发多个视图控制器

经过几天有条件地解雇了一段时间之后,我得到了西蒙 在这里的回答。 请花点时间看看,或者你可能不明白我在下面谈论什么。 我没有复制粘贴他的答案,因为他已经在那里很好地解释了。

现在我面临一个新的问题。 如果我想从一个View Controller继续使用多个View Controller?

进一步解释:说我有一个2个button的MainViewController 。 点击每个button后,它应该继续到他们各自的视图控制器。 第一个button到FirstViewController ,第二个button到SecondViewController

当您从一个视图控制器切换到另一个视图控制器时,可以使用Simon答案中所述的方法。 由于在这种方法中,您将segue绑定到View Controller itsrlf而不是button,您只有一个segue和该特定View Controller的标识符。 所以我不能单独区分button水龙头。

有没有解决这个问题的解决方法?

谢谢。

说这个可能有点不成熟,但我想你应该深入研究塞格。

是的,你可以从button执行segure。 只要控制点击button,并拖动光标查看你想要的控制器SEGUE'D。 从我的理解只有条件有每个button点击结果一个segue到一个固定的观点。 那里没有条件。

另外,您可以通过手动推动导航控制器

 YourViewController *destViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"YourDestinationViewId"]; [self.navigationController pushViewController:destViewController animated:YES]; 

更新:

为了阻止继续进行,准备赛车已经太迟了。 是的,你可以从你的视图创build多个赛段到其他视图控制器。 在这种情况下,你必须这样做。 不要从button中删除一个segue,只需在button上定义一个IBACtion就可以从那里进行validation,

 if(validationSuccess) { [self performSegueWithIdentifier:@"segue1" sender:self]; } 

如果你使用的是ios6

  - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender 

在validation成功时返回YES,在没有阻止它继续进行时返回NO。

我build议你看看重做你的代码逻辑。

如果我理解正确,你有一个VC(embedded在导航控制器中)和2个button,你已经想出了如何将每个button传递给不同的VC。

你的问题是,你要确保即使按下了其中一个button,在动作发生之前也要进行validation。 我会build议这是不好的用户界面devise,因为用户有这样的错觉,这个button可能会做一些事情,然后他们点击它,什么也没有发生。

UIButton可以连接到IBActions(启动动作)和IBOutlets(设置它们的属性)。 如果这是一个在IB直接创build的button,我将它作为一个Outlet属性连接到你的类:

 @property (nonatomic,weak) IBOutlet UIButton* myButton; 

然后设置其启用值:

 self.myButton.enabled=NO; 

这将保持button,并将其调暗。 这是更好的UIdevise,用户知道他们不应该按下button,因为一些条件不满意。

我会重写代码,以便默认情况下将此值设置为禁用,并在您的“条件”满足时在代码中正确启用它。

显然,如果这个button是以编程的方式创build的(在没有IB的代码中),那么使用上面的第二个命令很容易。

希望这可以帮助。

我只是写了另一种方式从一个表中调用多个详细视图。 每个单元基本上可以显示不同的视图。 该代码与您在本文中看到的代码类似,但实质上使用列表项上的标识符和属性来确定显示哪个视图。

https://codebylarry.com/2016/07/15/multiple-detail-views-in-swift/

 override func tableView(tableView: UITableView,didSelectRowAtIndexPath indexPath: NSIndexPath) { if indexPath.row == 1 { self.performSegueWithIdentifier("secondView", sender: self) } else { self.performSegueWithIdentifier(“others", sender: self) } }