我开始看一下新Swift的Xcode 6,我尝试了一些演示项目和教程.现在我被困在:
实例化然后viewController从特定的故事板中呈现
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboardName" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"myVCID"];
[self presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
如何在Swift上实现这一目标?
默认情况下,Xcode 6界面构建器具有新的复选框"使用大小类".它使视图自适应.

当我尝试在我的故事板中的2个视图之间制作segue时,我有了新的选择:

相反旧:

现在我们有"显示"和"呈现模态"而不是"推"和"模态".旧选项标记为已弃用.我选择了"show"选项,因为在segue设置中它称为"show(例如push)

但它没有推动.Segue动画看起来像从底部滑动(模态),导航栏消失.
问题是:如何让"show"像push一样工作?是否可以或者我应该使用"推(弃用)"代替?我在哪里可以找到有关新型segue的任何信息?我在iOS8开发人员库中找到的唯一一件事是Storyboards帮助您设计用户界面,但没有关于"show"segue的信息.
我试图创建新项目,"show"真的像"推"一样工作.我认为我的项目中的问题可能是因为我重复使用导航控制器这样的代码,但我不知道如何解决它.
if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] ) {
SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;
swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {
UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController;
[navController setViewControllers: @[dvc] animated: NO ];
[self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
};
}
Run Code Online (Sandbox Code Playgroud)
之后我尝试在MainViewController之后推送NewViewController

我似乎只是iOS 7,iOS 7.1问题.
有人比我更了解performSegueWithIdentifier:sender:我吗?我需要切换视图(和类),并将一些NSStrings和ID带到该视图的类.我想知道这是否可行performSegueWithIdentifier:sender:
谢谢!
在Swift中,我有一个使用programmaticaly创建的按钮:
var button = UIBarButtonItem(title: "Tableau", style: .Plain, target: self, action: "tabBarTableauClicked")
Run Code Online (Sandbox Code Playgroud)
我希望当用户单击该按钮时,它会更改viewControllers.这是以下代码tabBarTableauClicked:
func tabBarTableauClicked(){
performSegueWithIdentifier("tableau", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
但它显然不起作用,因为没有带有名为"tableau"的标识符的segue.
我无法使用Ctrl +单击按钮创建一个segue并拖动到第二个viewController,因为按钮是以编程方式创建的,而不是在Storyboard中创建的.
如何在Swift中以编程方式创建带有标识符的segue?
假设我有一个包含一个包含按钮的视图的Storyboard.当用户按下此按钮时,会出现弹出窗口.
因此,我需要通过使用Xcode将segue拖动到按钮来设置锚点(然后执行performSegueWithIdentifier:).
所以,我的问题是:有没有办法以编程方式设置这个"锚"?
谢谢.
我正在以push segue编程方式调用如下
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [mainStoryBoard instantiateViewControllerWithIdentifier:@"addToCartViewContollerForItem"];
[self.navigationController pushViewController: vc animated:YES];
Run Code Online (Sandbox Code Playgroud)
但我的问题是我想将这个segue的一些信息发送到目标viewcontroller.但这种方法- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender根本没有被解雇.
这就是准备方法的方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
NSLog(@"segue from deals screen");
//addToCartViewContollerForItem
if([[segue identifier] isEqualToString:@"addToCartSegue"]){
NSIndexPath *selectedRow = [[self tableView] indexPathForSelectedRow];
Item *currentItem = [[Item alloc]init];
currentItem = [itemList objectAtIndex:[selectedRow row]];
RESTAddToCartViewController *vc = [segue destinationViewController];
[vc …Run Code Online (Sandbox Code Playgroud) 问题:
我有一个表视图,用户可以滚动查找内容或使用搜索栏.搜索栏不是使用StoryBoard创建的.我的视图有一个UISearchController处理搜索栏和搜索结果更新.我遇到的问题是,由于我SearchResultsController是由另一个控制器实例化的,我不能执行另一个视图的segue,或者至少我找不到解决方案.除了我的搜索结果控制器和它注定的视图之间的segue之外,一切都有效.
我想做什么
有我的MyNavTableViewController代表MySearchResultsController.在搜索结果控制器中,当用户点击a时,它将转到另一个视图TableViewCell.我没有使用StoryBoard来实现这一点我很难使用segues转换到另一个视图.
如果我不能让这个工作,我可能会做:
我必须在视图之间传递信息,对我来说,我总是使用segues来完成它.但是,如果这不起作用,我可能会尝试通过将其推送到导航控制器堆栈并将数据写入共享数据库或其他内容来模态地呈现视图.我宁愿使用segue.
研究: 肯定不止于此,但我不会在网址上占用太多空间.
我的设置
我将尝试尽可能简洁.代码比我正在显示的代码多.我只是想尝试清理它,以便我只展示重要的东西.我也在改变一些名字,因为可能有敏感的信息.这可能不是什么大问题,但我宁愿保持安全.
class MyNavTableViewController: UIViewController, UITableViewDataSource{
//this is
@IBOutlet weak var tableView: UITableView!
var searchController: UISearchController!
override func viewDidLoad(){
...code
tableView.registerClass(UITableViewCell.self,forCellReuseIdentifier: tblId)
let resultsController = MySearchResultsController()
resultsController.databaseFilePath = databaseFilePath()
//this is essential that I use a segue because between my views I'm passing information between them.
resultsController.photo = photo!
searchController = UISearchController(searchResultsController: resultsController)
let searchBar = searchController.searchBar
searchBar.placeholder = searchBarPlaceHolderText …Run Code Online (Sandbox Code Playgroud) ios ×5
objective-c ×4
segue ×3
swift ×3
storyboard ×2
uistoryboard ×2
ios8 ×1
iphone ×1
push ×1
swift2 ×1
uikit ×1
xcode ×1
xcode6 ×1