标签: uistoryboard

iPhone在故事板中呈现和解散导航视图控制器?

我有根视图,它提供了带有内容控制器的导航控制器,它的外观如下: 在此输入图像描述

NavigationController以模态方式呈现,ProjectTypeSelectionView是其根控制器.当点击注销按钮时,我想解除模态视图并返回到LoginScreenViewController.

所以我在prepareSegue LoginScreen中设置为委托:

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

 UINavigationController *destination = segue.destinationViewController;

 if ([[destination ] respondsToSelector:@selector(setDelegate:)]) {
     NSLog(@"%@", destination);
     [destination setValue:self forKey:@"delegate"];
}
}
Run Code Online (Sandbox Code Playgroud)

然后在ProjectTypeViewController中添加此方法:

 - (IBAction)logout:(id)sender {
      [self.delegate projectTypeSelectionViewControllerDidFinish];
 }
Run Code Online (Sandbox Code Playgroud)

点击注销按钮时调用.令我惊讶的是,这并没有解雇控制器.没有任何事情发生,即使你的一切都是连通的.

我已经跟踪了错误 - 当prepareSegue被调用时,NavigationController的delagate被设置为LoginScreenViewController,将ProjectTypeController的委托设置为LoginScreenViewController的插件.

我该如何正确解决这个问题?

iphone uinavigationcontroller presentmodalviewcontroller uistoryboard

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

无法移动UIImageView

在XCode iPad应用程序中,我使用带有视图的故事板和内部的UIImageView,在Interface Builder中定义.如果我尝试使用SetFrame命令[myImageView setFrame:CgRectMake ...]更改UIImageView的位置,则图像不会更改屏幕上的位置.setFrame命令是否足够?谢谢.

xcode interface-builder uiimageview ios uistoryboard

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

将"initWithNibName"更改为"storyboardWithName"

我按照一些教程在应用程序启动期间创建一个打开的门动画,但它正在调用

xib文件,我想调用storyboard,我没有足够的经验.这是我的代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[OpenDoorsViewController alloc] initWithNibName:@"OpenDoorsViewController" bundle:nil] autorelease];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

xcode nib ios uistoryboard

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

将故事板设置为起始文件而不是xib

嗨,我有一个基于xib的项目,然后我添加了故事板"main.storyboard".但它仍然运行与初始屏幕替代故事板相同的xib.

2013-12-18 16:44:14.376 AePubReader[1882:60b] NSMainNibFile and UIMainStoryboardFile are both set. NSMainNibFile ignored.
2013-12-18 16:44:14.396 AePubReader[1882:60b] There is no app delegate set. An app delegate class must be specified to use a main storyboard file.
Run Code Online (Sandbox Code Playgroud)

以下图片确保我已将故事板作为起始屏幕.

我的旧app app for xib文件,现在我从这里替换xib uiviewcontroller类并把我的新storyboard viewcontroller类名

.h文件

#import <UIKit/UIKit.h>


@class viewViewController;

@interface AePubReaderAppDelegate : NSObject <UIApplicationDelegate> {

    UIWindow *window;

    viewViewController *detailViewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;

@property (nonatomic, retain) IBOutlet viewViewController *detailViewController;

@end
Run Code Online (Sandbox Code Playgroud)

.m文件

#import "AePubReaderAppDelegate.h"


#import "ViewController.h"


@implementation AePubReaderAppDelegate

@synthesize window, detailViewController; …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiviewcontroller ios uistoryboard

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

TabBar应用程序 - 在显示视图之前加载数据

我正在根据底部的tabBar菜单制作应用程序.初始视图是一个带有按钮,文本字段,标签等的简单视图.第二个选项卡/视图是一个tableView,当应用程序启动时,将从appDelegate中的服务器检索单元格的数据.但是如果用户在下载数据之前按下第二个选项卡,那么tableView为空.

如何确保用户在下载tableView数据之前无法按下第二个选项卡?或者我必须用微调器或类似的东西显示临时视图?

请注意我使用的是故事板.

uitabbarcontroller ios uistoryboard

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

Segue崩溃了我的程序.与我的NavigationController和我的TabBarViewController有关

我在测试我的应用时遇到了问题.您可以在下图中看到我如何设置我的视图:

我的StoryBoard设置

问题是一切正常.我用我的测试用户登录,以下代码执行loginSegue,

self.performSegueWithIdentifier("loginSegue", sender: self)
Run Code Online (Sandbox Code Playgroud)

这是一个模态segue,它将我的登录"View Controller"与"Home Tab Bar View Controller"相关联.我被重定向到"初始Feed视图控制器".一切都很好.但是当我转到我的"设置视图控制器",然后单击"注销"按钮,其中包含以下代码(IBAction):

@IBAction func logoutAction(sender: AnyObject) {

  PFUser.logOut()

  self.performSegueWithIdentifier("logoutSegue", sender: self)
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序崩溃了.我的Logout按钮的动作有一个segue,它会将你带回登录"View Controller",但会先将用户记录下来(顺便说一下,我正在使用Parse).这个"推"segue称为logoutSegue.我试图将segue改为"Popover"segue.这解决了问题,有点,因为这样做会弄乱我的"注册视图控制器",因为在登录"视图控制器"时,我点击"注册"按钮,应用程序无论如何都会崩溃.

编译器告诉我,以下代码行是导致错误的代码:

self.performSegueWithIdentifier("logoutSegue", sender: self)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会这样.我想它与我的"导航控制器"和"主页标签栏视图控制器"设置有关.或者与代表一起?

你能帮我解决这个问题吗?如果你有Objective-C方法没关系,请随意提出一个解决方案,我可以尝试将它从Objective-C转换为Swift.

除了帮助我解决问题之外,我想知道你是否知道Segue类型(Push,Modal,Popover,Replace)之间的区别是什么,以及何时应该使用它们.我阅读了Apple的文档,但我仍然完全不理解它.

提前感谢您的建议和回复.

objective-c uinavigationcontroller uistoryboard uistoryboardsegue swift

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

使用Autolayout基于宽度比设置UIImage高度

我想弄清楚如何根据宽度在故事板上设置UIimage的高度?我需要它是基于宽度的比率.所以图像是全宽的.

目前我正在使用通用故事板,并希望图像为3:4,因此高度需要比宽度大33%.

我不明白的是通用故事板上的宽度是600,那么我怎么得到高度比宽度大33%的比例?

我无法弄清楚如何做到这一点.

ios uistoryboard autolayout

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

将视图的高度设置为等于另一个视图的宽度

我在故事板中偶然发现了一个有趣的问题.我正在使用约束.我想将视图高度设置为等于另一个视图的宽度.高度和宽度本身不是使用约束设置的,将根据屏幕大小在运行时设置.这可以在故事板中完成吗?

constraints ios uistoryboard autolayout nslayoutconstraint

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

如何在展开功能中执行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
查看次数

以编程方式执行segue,并将其保留在情节提要中

我想在单击表格单元格后从嵌入在导航控制器中的表格视图选择到另一个视图控制器。我仍然希望将第二个视图控制器嵌入到同一导航控制器中。因此,我通过情节提要创建了segue。

但是,我想在点击单元格后有条件地检查是否应该执行segue。

我已经签出了shouldPerformSegueWithIdentifier满足我需要的方法,但是不幸的是,它在表单击处理程序之前执行。如果我删除情节提要segue并仅通过进行segue performSegue,则我的第二个视图控制器不再嵌入相同的导航控制器中。

有什么建议吗?

这是我的代码:

// Called on click event on table cell
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
    let app = apps[indexPath.section]
    if app.state == .INSTALLED {
        let inputVC = self.navigationController?.viewControllers[1] as? InputVC
        inputVC?.app = app
        performSegue(withIdentifier: "showAccSync", sender: self)
    } else {
        // show alert
    }
}
Run Code Online (Sandbox Code Playgroud)

ios uistoryboard segue swift

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