标签: uistoryboard

从故事板重用视图

我有一个自定义节标题的tableview.节标题的视图在故事板中定义并连接到实例变量.有没有办法从故事板中请求视图的新实例?

在过去,我通过在自己的xib文件中定义节头并使用获取新实例来完成此操作

[[NSBundle mainBundle] loadNibNamed:@"TimerViewSectionHeader" owner:self options:nil];
UIView *newHeaderView = self.sectionHeaderView;
Run Code Online (Sandbox Code Playgroud)

iphone ipad ios uistoryboard

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

UITableView数据源和委托将不会连接到自定义类

我无法连接数据源并将故事板中的表视图的出口委托给我的自定义委托类.我想将这些表函数委托给另一个类.在故事板中,有一些我从根本上误解了关于委托,出口和布线的事情.

背景

我有一个UIViewController包含a UIPickerView等等的视图UITableView.
我已经达到了我UIViewController太大的程度,我想将与表相关的函数移到另一个类中.

我创建了以下类来包含那些表方法,如numberOfSectionsInTableView:.

@interface ExerciseTableDelegate : NSObject <UITableViewDelegate, UITableViewDataSource> 

@property (strong, nonatomic) ExerciseDataController *dataController;

@end
Run Code Online (Sandbox Code Playgroud)

我曾想过在我的课堂上提到上面的课程 UIViewController

@interface ExerciseViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
{
    UIPickerView *exercisePicker;
}

@property (strong, nonatomic) IBOutlet ExerciseTableDelegate *tableDelegate;

@end
Run Code Online (Sandbox Code Playgroud)

我希望在故事板中,当我将表视图中的一个数据源或委托出口拖到UITableViewController它上面时,它将使我能够连接到我的委托类.它没有.

然后我尝试在故事板中创建一个对象,为它提供类ExerciseTableDelegate.然后我可以将表视图委托拖动到对象,但这不是我在我设置的对象AppDelegate.

我的应用代表

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
    ExerciseViewController *rootViewController = (ExerciseViewController *)[[navigationController viewControllers] objectAtIndex:0];

    ExerciseTableDelegate *tableDelegate = [[ExerciseTableDelegate alloc]init];
    ExerciseDataController *dataController …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview ios uistoryboard

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

预计应用程序将在应用程序启动结束时在控制台中显示根视图控制器

我正在获取"应用程序在应用程序启动结束时有一个根视图控制器"语句在控制台中,而应用程序在显示启动画面后没有打开.我的应用程序:didFinishLaunchWithOptions方法是:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:@"FirstInfo"];

[self.window setRootViewController:initViewController];
[self.window makeKeyAndVisible];
[self.window makeKeyWindow];
return YES;
Run Code Online (Sandbox Code Playgroud)

main.m如下:

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

    }
}
Run Code Online (Sandbox Code Playgroud)

该应用程序以前工作正常.它只是一个快速无法运作今天.我在应用程序中使用ARC和Storyboard.请建议.

iphone ios uistoryboard

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

在注销时回到初始故事板ViewController

我在iOS中使用故事板.第一个屏幕是登录屏幕.当用户注销或退出时,他可能位于深层次结构的屏幕上.

例如:login view controller => modal view controller => tab bar controller => nav controller => view controller => view controller.我想从最顶层的视图控制器一直回到底部控制器.

编辑:这是视图层次结构图:在此输入图像描述

谢谢!

iphone ios uistoryboard uistoryboardsegue

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

在故事板中将Segue拖到自我

我想将一个segue从我的viewcontroller拖到自己身上.所以我可以推动那个特定视图控制器的"无限"实例.

我知道如何在代码中执行此操作(即以编程方式实现视图控制器).但是,我想尽可能使用segues.

我在故事板中找到了一些"黑客"来制作自我,但我不喜欢黑客,所以我的问题是;

是否有一种干净的方式让故事板中的自我回归?我不想从按钮等拖动它,我只想要一个我可以使用的通用segue:

[self performSegueWithIdentifier:@"segueIdentifier"]
Run Code Online (Sandbox Code Playgroud)

谢谢.

iphone ipad ios uistoryboard uistoryboardsegue

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

在iOS故事板中绘制类似于Android的XML行的行

在Android中,我可以通过简单地创建视图和设置其背景颜色来绘制线条

<LinearLayout...>
...
<View android:layout_width="1dp"
  android:layout_height="match_parent"
  android:background="@color/black"
...
<View android:layout_width="match_parent"
  android:layout_height="2dp"
  android:background="@color/red"
...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是Android中的常见做法.我怎么能在iOS中做同样的事情?常见的做法是什么?我在这里看到另一个问题,试图问一个类似的问题,但被告知要使用TableView.我正在寻找像Android答案一样简单和通用的东西.

line uiview ios uistoryboard

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

将以编程方式创建的UIView中心与自动布局视图的中心对齐

我创建了一个UIView故事板,它完全位于具有自动布局的View Controller的中心,并且可以在不同的设备大小上正常工作.我叫这个largerView.

但是,我想以编程方式创建一个较小的UIView被调用smallerView居中此视图,以便smallerView.center = largerView.center.

我遇到了一个问题,即在使用自动布局的情况下largerView,每当我使用上面的方法时,我都smallerView不会实际使用largerView.center.我注意到它将largerView根据我使用的设备的特定布局(在这种情况下,是之前的iPhone 5的尺寸),取出它们在Storyboard中出现的中心坐标,但不会受到自动布局影响的更新中心的影响.

这里可以讨论类似的问题,除非它基于Swift.我知道如何以编程方式创建约束,但我不确定如何在应用自动布局后获取视图的"刷新"坐标.

谢谢!

objective-c ios uistoryboard autolayout

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

AutoLayout:UIView中的UIView框架不正确

我在Storyboard中使用AutoLayout,一切似乎都很顺利.但是,当我将一个UIView放在另一个UIView中并将我想要的所有约束应用于容器及其子容器时,我注意到框架不正确viewDidLayoutSubviews:.考虑到我的约束,它不是我期望计算的框架,而是一些令人作呕的大框架(尽管是正确的起源).例如,而不是{{26,10},{444,10}}的框架,我得到类似{{0,0},{320,568}}的内容.

奇怪的是,这只发生在孩子UIView上,当我把它放在另一个UIView中时,它的超级视图(这是视图控制器的视图)有一些约束应用于它.由于我的印象是我可以根据我在方法中的约束条件正确地构建我的观点viewDidLayoutSubviews:,所以我很困惑为什么会发生这种情况.

我做出了不正确的假设吗?如果有人帮我指出正确的方向,我将不胜感激.谢谢!

注意:如果我依赖于正确的帧依赖设置viewDidAppear:,这个问题就完全解决了,但对我来说这是一个有点不太令人满意的解决方法.

cocoa-touch uiview ios uistoryboard autolayout

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

在视图控制器/页面视图控制器(swift)中使图像视图全屏

我正在使用UIPageViewController来全屏显示图像.问题是图像没有全屏显示.相反,图像与页面控制视图点之间的底部和顶部之间存在间隙.我有一个UIViewController,作为子视图/子项添加到UIPageController,ViewController使用ImageView显示图像.我试图在swift/storyboard中这样做.

我在故事板中将顶部栏和底栏选项更改为"无",但它不起作用.

图像预览:

在此输入图像描述

ChildViewControllerCode:

class BoatContentViewController: UIViewController {

@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!


var pageIndex: Int!
var titleText: String!
var imageFile: String!


override func viewDidLoad() {
    super.viewDidLoad()

    self.imageView.image = UIImage(named: self.imageFile)
    self.titleLabel.text = self.titleText


    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
Run Code Online (Sandbox Code Playgroud)

mainViewControllerCode:

class BoatViewController: UIViewController, UIPageViewControllerDataSource {
@IBOutlet weak var loginButton: UIButton!
@IBOutlet weak var skipButton: UIButton! …
Run Code Online (Sandbox Code Playgroud)

ios uistoryboard uipageviewcontroller xcode-storyboard swift

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

从框架加载故事板

我正在用Cocoapods和Swift 1.2创建一个库.我有一个故事板,我必须在我的库中加载.虽然,我总是得到同样的错误:

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因是:'无法在bundle`中找到名为'Main'的故事板.

我尝试过的:

  • 将我的故事板放在Classes文件夹中
  • 将我的故事板放在Assets文件夹中
  • 从设备中删除我的应用程序,清理项目并重新构建.
  • 使用 UIStoryboard(name:"Main", bundle:nil)
  • 使用 UIStoryboard(name:"Main", bundle:NSBundle(forClass:self))
  • 使用 UIStoryboard(name:"Main", identifier:myIdentifier)

我虽然能够从我的示例项目加载故事板,然后我只能实例化初始视图控制器.

尝试storyboard!.instantiateViewControllerWithIdentifier(someIdentifier)从初始视图控制器调用总是导致视图控制器找不到,虽然我可以清楚地看到有一个带有该标识符的视图控制器.我该如何解决这个问题?

frameworks ios uistoryboard swift

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