首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pushViewController,何时设置UILabel文本,并且需要调用setNeedsDisplay吗?

当你在使用pushViewController时,你可以在以下两个时机设置UILabel的文本:

  1. 在你的目标视图控制器的viewDidLoad方法中设置UILabel的文本。这个方法会在视图控制器的视图被加载到内存中时自动调用,因此你可以在这里设置UILabel的文本。
代码语言:swift
复制
override func viewDidLoad() {
    super.viewDidLoad()
    yourLabel.text = "你的文本"
}
  1. 在你的目标视图控制器的viewWillAppear方法中设置UILabel的文本。这个方法会在视图控制器的视图即将出现在屏幕上时调用,因此你可以在这里设置UILabel的文本。
代码语言:swift
复制
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    yourLabel.text = "你的文本"
}

在这两种情况下,你都不需要调用setNeedsDisplay方法来刷新UILabel的显示。当你设置了UILabel的文本后,UIKit会自动识别这个变化并更新UILabel的显示。

总结一下,你可以在pushViewController时,在目标视图控制器的viewDidLoad或viewWillAppear方法中设置UILabel的文本,并且不需要调用setNeedsDisplay方法来刷新UILabel的显示。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

史上最全的iOS之UITextView实现placeHolder占位文字的N种方法

子控件,作为placeholder 3.在文本改变的代理方法里面显示/隐藏UILabel 特点:该方法同样也可以实现类似于placeholder的功能。...,需要配合textViewDidChanged:这个文本改变的代理方法使用。...- (void)layoutSubviews { [super layoutSubviews]; [self setNeedsDisplay]; } // 设置属性的时候需要重绘...]; if (text.length) { // 因为是在文本改变的代理方法中判断是否显示placeholder,而通过代码设置text的方式又不会调用文本改变的代理方法,所以再此根据text是否不为空判断是否显示..."; // 不会调用文本改变的代理方法 textView.attributedText = [[NSAttributedString alloc] initWithString:@"富文本"];

10.5K40

iOS 之 异步绘制原理

解决方案使用异步绘制就是: 把 UIView 显示的内容(包括 UILabel 的文字,UIImageView 的图片等)绘制生成的 bitmap 在子线程完成。...首先 UIView 调用 setNeedsDisplay 方法 其实是调用其 layer 属性的同名方法(view.layer setNeedsDisplay) 这时 layer 并不会立刻调用 display...面试考点 ---- ▐ 我们调用 [UIView setNeedsDisplay] 方法的时候,不会立马发送对应视图的绘制工作,为什么?...调用 [UIView setNeedsDisplay] 后, 然后会调用系统的同名方法 [view.layer setNeedsDisplay] 方法并在当前 view 上面打上一个脏标记 当前 Runloop...并且实现/遵从了 dispayLayer 这个方法,我们就可以进行异步绘制: 1)代理负责生产对应的 bitmap 2)设置 bitmap 作为 layer.contents 属性的值 5.

3.2K30
  • iOS layout相关方法

    setNeedsLayout 标记为需要重新布局,不立即刷新,但layoutSubviews一定会被调用配合layoutIfNeeded立即更新 layoutIfNeeded 如果有需要刷新的标记,立即调用...然后系统自动调用drawRect:方法。 3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。...如果在其他方法中获取将获取到一个invalidate的ref并且不能用于画图。...drawRect:方法不能手动显示调用,必须通过调用setNeedsDisplay 或者 setNeedsDisplayInRect,让系统自动调该方法。...同样也是调用setNeedDisplay等间接调用以上方法 3、若要实时画图,不能使用gestureRecognizer,只能使用touchbegan等方法来掉用setNeedsDisplay实时刷新屏幕

    1.1K10

    UIview

    例如,UILabel对象画了一个文本字符串和UIImageView对象绘制图像。 因为视图对象是主要的应用程序与用户交互的方式,他们有许多责任。...The View Drawing Cycle 视图绘制需要的基础上发生。视图是第一次显示时,或者当全部或部分变得可见由于布局变化,系统询问该视图画它的内容。...视图包含使用UIKit定制内容或核心图形、系统调用视图的draw(_:)方法。该方法的实现负责绘制视图的内容到当前图形上下文,这是系统设置的自动调用该方法之前。...当视图的实际内容发生变化时,你有责任通知系统视图需要重绘。这可以通过调用视图的setNeedsDisplay()或setNeedsDisplay(_:)方法。...因为它将等待下一个绘图周期更新视图中,您可以调用这些方法在多个视图同一时间更新他们。

    71010

    iOS面试题-UI篇

    Application:存放程序源文件,上架前经过数字签名,上架后不可修改 Documents:常用目录,iCloud备份目录,存放数据 Library Caches:存放体积大又不需要备份的数据 Preference...:设置目录,iCloud会备份设置信息 tmp:存放临时文件,不会被备份,而且这个文件下的数据有可能随时被清除的可能 pushViewController和presentViewController有什么区别...这个方法的调用机制也是非常特别....当你调用 setNeedsDisplay 方法时, UIKit 将会把当前图层标记为dirty,但还是会显示原来的内容,直到下一次的视图渲染周期,才会将标记为 dirty 的图层重新建立Core Graphics...通过NSAttributedString/NSMutableAttributedString(富文本) UIScrollView的contentSize能否在viewDidLoad中设置

    2K21

    iOS开发之通过代理逆向传值

    一、代理模式中的几个概念 讲代理模式之前,首先需要弄清楚两个概念:被代理对象和代理对象。并且需要知道它们之间是靠协议关连起来的。...被代理对象 1、定义协议,在协议中定义方法用于传值,传什么类型的值就设置什么类型的参数 2、声明一个遵守上述协议的delegate属性 3、在需要传值的时候调用代理对象完成传值 代理对象 1、遵守被代理对象定义的协议..., No BB,下面举一个实际案例:现在有两个界面,如图1和图2所示,界面很简单,不再赘述,主要是在第一个界面点击跳转按钮,到达第二个界面,然后第二界面在输入框中输入信息后点击返回按钮,第一个界面中的UILabel...description#> */ - (IBAction)back:(id)sender { NSString *inputString = self.inputText.text; //3、调用代理对象完成传值...delegate属性为代理对象即self nvc.delegate = self; [self.navigationController pushViewController:nvc animated

    73550

    谈谈对drawRect的理解

    这个是由系统自动调用的,主要是在UIViewController中loadView和viewDidLoad方法调用之后; 如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用...; 该方法在调用sizeThatFits后被调用,所以可以先调用sizeToFit计算出size,然后系统自动调用drawRect:方法; 通过设置contentMode属性值为UIViewContentModeRedraw...,那么将在每次设置或更改frame的时候自动调用drawRect:; 直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:,但是有个前提条件是rect...在其他方法中获取的contextRef都是不生效的; drawRect:方法不能手动调用需要调用实例方法setNeedsDisplay或者setNeedsDisplayInRect,让系统自动调用该方法...Apple官方文档描述 小结一下 上面的几个问题说的有些啰嗦了,总结一下需要掌握一下几点: 了解drawRect使用场景; 哪些方法可以调用; 了解何时进行重绘; 参考文献 drawRect参考

    1.8K20

    【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    UILabel 属性 UILabel 属性 :  (1) Text 属性 Text 属性 :  -- 属性值 : 支持 Plain 和 Attribute 属性, 一般设置为 Plain; -- 文本...: 在 Text 属性下面有一个文本框, 在这个文本框中输入要显示的文本内容; (2) Color 属性 Color 属性 : 控制 UILabel 中的文本颜色; (3) Font 属性 Font...Size : 设置最小的字号大小, 设置的值是字体大小; -- Tighten Letter Spacing : 勾选该复选框 会自动压缩字符串中的空白, 保证 UILabel 能容纳这些文本中的内容...; (9) Highlighted 属性 Highlighted 属性 :  -- 作用 : 为 UILabel 中的文本设置高亮显示, 前提 Behavior 属性的 Highlighted 属性勾选...对象 label = [[UILabel alloc] initWithFrame:CGRectMake(60, 30, 200, 130)]; // 设置文本内容 label.text

    4.9K30

    layoutSubviews 调用

    setNeedsDisplay调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。...当UIView设置为自动适配屏幕时,当用户旋转设备的时候,会调用layoutSubviews方法,我们只需重写 这个方法,然后判断用户屏幕的方向。在调整每个空间的位置即可。...CGRectMake(12, 6, 106, 158)]; [textLable setFrame:CGRectMake(135, 11, 147, 39)]; } layoutSubviews何时调用的问题...layoutSubviews何时调用的问题,这个方法是当你需要在调整subview的大小的时候需要重写(我这个翻译不严谨,以下是原文:You should override this method...layoutSubviews在以下情况下会被调用: 1、init初始化不会触发layoutSubviews 2、addSubview会触发layoutSubviews 3、设置view的Frame

    54750

    Quartz2D复习(一)--- 基础知识 绘制线段圆弧 图片水印 截图

    -->需要图形上下文,保存绘图信息; 然后图形上下文必须跟view相关联,才能将内容绘制到View上面   自定义UI控件的步骤:   1)新建一个类,继承自UIView   2)实现  - (void...--》当view第一次显示到屏幕上时(被加到UIWindow上现实出来)   --》调用view的setNeedsDisplay或者setNeedsDisplayInRect: 时 6、view内部有个...该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。...该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。...0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义。

    2.6K10

    【iOS 开发】从 setNeedsLayout 说起

    setNeedsLayout 方法以标记该视图(或者它的子视图)为需要进行布局更新 -调用 setNeedsDisplay 或者 setNeedsDisplayInRect...如上所述,在当前 run loop 结束之前,我们有机会做各种视图更改,并且这些更改会在下一个 run loop 体现出来,所以** View Drawing Cycle 就是一次次 run loop...所以重要的其实是了解何时会触发 layoutSubviews: init 初始化不会触发 layoutSubviews addSubview 会触发 layoutSubviews...设置 view 的 frame 会触发 layoutSubviews,当然前提是 frame 的值设置前后发生了变化 滚动一个 UIScrollView 会触发 layoutSubviews 旋转 Screen...那么如果我想要这个直线一直根据两个点同步变化的话,就需要在 dotView 的位置发生改变时,执行: lineView.setNeedsDisplay() // 重绘 lineView

    70710

    测试 View Controllers

    这样,我们就可以针对性地测试,并且保证不依赖于应用程序的其他部分。 在示例程序中,我们有个包含数组的 data source 需要测试。...我们在这里所做的,是让 mock 记录特定的调用。Mock 不是一个真正的 table view;我们只是假装它是。-expect 方法允许我们设置一个 mock,让它知道当这个方法调用时要做什么。...相应地,-stub 方法也用来设置 mock 对象,但它不关心方法是否被调用过。 现在,我们要触发代码运行。我们就调用我们希望测试的方法。...OCMockObject partialMockForObject:appDelegate]; [[[appDelegateMock stub] andReturn:storeMock] store]; 现在,无论何时调用...需要记住的事 部分 mock 技术将会在 mocks 的存在期间替换并保持被 mocking 的对象,并且一直有效。你可以通过提前调用[aMock stopMocking]来终于这种行为。

    73020

    【IOS开发基础系列】Navigation页面导航专题

    VC分别有navigationController的情况,即不是使用push方式加载子VC,而是通过AddChildViewController的方式添加的场景,则父级导航条会覆盖在子级导航条上面,所以需要在载入时把父级导航条做隐藏处理...rootVC.view.frame]; [addVC.view setBackgroundColor: [UIColor whiteColor]]; 2.3.4 手动移除带导航条的子VC 视图View与控制器都需要移除...//自定义标题视图 UILabel *titleLabel = [[UILabel alloc] initWithFrame: CGRectMake(0, 0, 200, 44)]; titleLabel.backgroundColor...2.5.8 Tabbar的显示与隐藏 Tabbar的隐藏函数,其实只在Nav Push的之前调用时起作用 //隐藏Tabbar [viewController setHidesBottomBarWhenPushed...: YES]; [super pushViewController: viewController animated: animated]; 而Tabbar的显示,则只有在Pop函数调用前执行才真正起作用

    43520

    iOS学习——Quartz2D学习之UIKit绘制

    一旦drawRect:方法被调用,就可以使用任何的UIKit、Quartz 2D、OpenGL ES等技术对视图的内容进行绘制了。   ...setNeedsDisplay和setNeedsDisplayInRect:方法是设置视图或者视图部分区域是否需要重新绘制,setNeedsDisplay是重新绘制整个视图,setNeedsDisplayInRect...触发视图重新绘制的动作有如下几种: 当遮挡你的视图的其他视图被移动或删除操作的时候; 将视图的hidden属性声明设置为NO,使其从隐藏状态变为可见; 将视图滚出屏幕,然后再重新回到屏幕上; 显式调用视图的...3、文本绘制 先创建好要画的文字 使用UIKit提供的方法进行绘制,drawAtPoint:要画到哪个位置 withAttributes:文本的样式....通过绘制方法的最后一个属性withAttributes来设置文字属性,它要求传入的是一个字典.它是通过字典的key和Value的形式来设置文字样式.。

    1.5K20
    领券