相关疑难解决方法(0)

在Swift中实例化和呈现viewController

问题

我开始看一下新SwiftXcode 6,我尝试了一些演示项目和教程.现在我被困在:

实例化然后viewController从特定的故事板中呈现

Objective-C解决方案

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上实现这一目标?

objective-c uiviewcontroller ios swift

290
推荐指数
9
解决办法
29万
查看次数

故事板中的自适应segue Xcode 6.推送是否被弃用?

默认情况下,Xcode 6界面构建器具有新的复选框"使用大小类".它使视图自适应. 在此输入图像描述

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

相反旧:

在此输入图像描述

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

在此输入图像描述

但它没有推动.Segue动画看起来像从底部滑动(模态),导航栏消失.

问题是:如何让"show"像push一样工作?是否可以或者我应该使用"推(弃用)"代替?我在哪里可以找到有关新型segue的任何信息?我在iOS8开发人员库中找到的唯一一件事是Storyboards帮助您设计用户界面,但没有关于"show"segue的信息.

UPDATE

我试图创建新项目,"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 在此输入图像描述

更新2:

我似乎只是iOS 7,iOS 7.1问题.

push storyboard xcode6 ios8

119
推荐指数
5
解决办法
7万
查看次数

了解performSegueWithIdentifier

有人比我更了解performSegueWithIdentifier:sender:我吗?我需要切换视图(和类),并将一些NSStrings和ID带到该视图的类.我想知道这是否可行performSegueWithIdentifier:sender:

谢谢!

xcode objective-c uikit ios segue

50
推荐指数
2
解决办法
8万
查看次数

如何创建可以从以编程方式创建的按钮调用的segue?

在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?

uistoryboard segue uistoryboardsegue swift

23
推荐指数
1
解决办法
3万
查看次数

有没有办法以编程方式选择segue锚点?

假设我有一个包含一个包含按钮的视图的Storyboard.当用户按下此按钮时,会出现弹出窗口.

因此,我需要通过使用Xcode将segue拖动到按钮来设置锚点(然后执行performSegueWithIdentifier:).

所以,我的问题是:有没有办法以编程方式设置这个"锚"?

谢谢.

objective-c storyboard ios uistoryboardsegue

15
推荐指数
2
解决办法
7976
查看次数

以编程方式调用push segue和prepareforsegue方法

我正在以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)

iphone objective-c ios uistoryboard segue

6
推荐指数
1
解决办法
2万
查看次数

搜索结果中的Swift搜索结果控制器转到另一个视图控制器

问题:

我有一个表视图,用户可以滚动查找内容或使用搜索栏.搜索栏不是使用StoryBoard创建的.我的视图有一个UISearchController处理搜索栏和搜索结果更新.我遇到的问题是,由于我SearchResultsController是由另一个控制器实例化的,我不能执行另一个视图的segue,或者至少我找不到解决方案.除了我的搜索结果控制器和它注定的视图之间的segue之外,一切都有效.

我想做什么

有我的MyNavTableViewController代表MySearchResultsController.在搜索结果控制器中,当用户点击a时,它将转到另一个视图TableViewCell.我没有使用StoryBoard来实现这一点我很难使用segues转换到另一个视图.

如果我不能让这个工作,我可能会做:

我必须在视图之间传递信息,对我来说,我总是使用segues来完成它.但是,如果这不起作用,我可能会尝试通过将其推送到导航控制器堆栈并将数据写入共享数据库或其他内容来模态地呈现视图.我宁愿使用segue.

研究: 肯定不止于此,但我不会在网址上占用太多空间.

以编程方式创建segue

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/UsingSegues.html

我的设置

我将尝试尽可能简洁.代码比我正在显示的代码多.我只是想尝试清理它,以便我只展示重要的东西.我也在改变一些名字,因为可能有敏感的信息.这可能不是什么大问题,但我宁愿保持安全.

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 swift uisearchcontroller swift2

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