addSubview方法是否实际将视图加载到应用程序中?我问的原因是因为我的申请中有两个两个观点.应用程序委托将两个视图添加为子视图,然后预先显示其中一个视图.现在,我在每个视图的每个viewDidLoad方法中都有一个print语句.当我运行应用程序时,应用程序委托将视图作为子视图加载,并且在加载每个视图时,我实际上看到控制台打印出我在每个viewDidLoad方法中放置的语句.这应该是这样做的吗?
我会感兴趣的是任何能够在"viewDidUnload"中提供关于下面的Apple推荐(在核心数据教程中找到)的更多信息的人.例如:
码:
// The implementation of viewDidUnload should relinquish ownership
// of anything created in viewDidLoad that can be recreated.
- (void)viewDidUnload {
self.eventsArray = nil;
self.locationManager = nil;
self.addButton = nil;
}
- (void)dealloc {
[managedObjectContext release];
[eventsArray release];
[locationManager release];
[addButton release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud) 首次显示视图时,UIViewController中的哪个方法仅被调用一次?
我要问的原因是我需要调用NSNotificationCenter的addObserver方法,并且只需要执行一次,而且,在视图不可见时也不需要调用removeObserver。(实际上,当视图不可见时收到通知时,我会进行一些灯光处理。)
最佳做法是什么-应该调用哪种方法?它是viewDidLoad方法-是否有人可以确认在随后出现视图时是否仅将此方法调用一次且从未调用过?
我的iOS有点问题.我使用协议和手动切换视图在两个视图控制器之间来回传递数据.我的问题是,当我关闭顶视图时,不再调用底视图的viewDidLoad.由于我从第二个视图向第一个视图发送信息,我需要调用viewDidLoad,以便我可以处理我传递的信息.如果您对如何执行此操作有任何想法,欢迎任何帮助.谢谢.
我知道iphone 5尺寸为640*960,iphone 4和之前的iphone尺寸为320*480.现在,我很困惑.如果我希望我的应用程序在这些不同的iphone上工作,如何计算图像视图或按钮的框架.例如,在viewDidLoad中,我有一个图像,它的大小是630*100,名称是someImage@2x.png,另一个大小是315*50,名称是someImage.png.图像相同但尺寸不同.然后我创建了一个带有CGRectMake(5,5,315,50)帧的UIImageView,它的大小为320*480.我是否必须这样做(iphone5)然后用CGRectMake(10,10,630,100)的框架为UIImageView设置另一个框架?我是否必须为这两种尺寸准备两个不同的UIImageView框架?
我正在设置第一个viewController,它将出现在App Startup上.这是我的AppDelegate.h:
#import "AppDelegate.h"
#import "TutorialController.h" // a simple UIViewController
@implementation AppDelegate
@synthesize window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
window.rootViewController = [[TutorialController alloc] init];
[window makeKeyAndVisible];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
它没有提供任何警报,但启动应用程序,在启动画面后,它只显示黑屏.没有那个代码一切正常.我不能在StoryBoard中这样做,因为在解决了这个问题后,我必须添加其他东西......可能出错了什么?谢谢!
我知道你可以使用ViewDidLoad在加载视图时运行一些代码.然而,这只发生一次.如何在每次显示视图时运行方法.例如:让我们说你当前在ViewController A中并按下UIButton转到ViewController B.然后按一个按钮返回ViewController A,那么你将如何重新运行ViewDidLoad代码?
我希望我的问题有道理.本质上,我希望每次用户在特定的ViewController上重新运行一个小方法.
谢谢你的时间,丹.
是否可以在viewDidLoad()中包含@IB Action函数?
动作很简单 - 步进器相应地增加其他label.text值.但是,步进器需要使用的值取决于url的返回内容 - 当然只有在viewDidLoad()之后才知道.
所以我认为我不能在viewDidLoad()之前将IBaction方式放在首位,如果我尝试在viewDidLoad()中执行我的IB操作,我得到的错误是:
"只有实例方法可以声明'IBAction'"
编辑
让我澄清一下,抱歉这是混乱.我知道我需要一个插座来获取UIStepper值.我有这个:
@IBOutlet weak var stepper: UIStepper!
Run Code Online (Sandbox Code Playgroud)
然后我有一个连接到同一个UIStepper的动作,它将相应地增加/减少标签文本(new_total)的值:
@IBOutlet weak var new_total: UILabel!
@IBAction func step_up_pass(sender: AnyObject) {
new_total.text = "\(Int(stepper.value))"
}
Run Code Online (Sandbox Code Playgroud)
但是,我想从一个值(todays_price)开始,我将从json请求返回并使用它作为起点,使用步进器将其相乘并将乘积值放入标签的文本中.
我在一个单独的文件中有一个结构,它定义了我的对象,所以:
struct PassengerFromOtherBus {
var fname: String?
var lname: String?
var todays_price: Int?
init(json: NSDictionary) {
self.fname = json["fname"] as? String
self.lname = json["lname"] as? String
self.todays_price = json["todays_price"] as? Int
}
Run Code Online (Sandbox Code Playgroud)
}
所以稍后在视图控制器中,在viewDidLoad()内部,连接到URL然后使用NSJSONSerialization和其他一些代码解析它(我不需要让你迷惑)我终于有了我的价值todays_price.所以我的问题是,当我的viewDidLoad()内部只知道它时,如何使用该值?Xcode甚至不允许我将IBAction连接到viewDidLoad函数内的任何位置!
我在swift上制作iPhone应用程序,这里在ios swift应用程序中的一个viewDidLoad上多次调用ViewDidAppear和ViewWillAppear?
请帮我.
我有一个理解问题...我创建了两个相似的视图(相同的原点和相同的大小)和剖面视图,而我创建了这些视图 - 一个在viewDidLoad另一个中viewDidAppear- 当我在原点x和y中放置相似的起点引用第i部分的每个视图都将这些视图放在不同的位置.有人可以解释一下这些观点不在同一个位置的原因是什么?
import UIKit
class ViewController: UIViewController {
@IBOutlet var sec: UIView!
override func viewDidLoad() {
let shape = UIView(frame: CGRect(x: sec.frame.width/2, y: sec.frame.height/2, width: 100, height: 100));
shape.backgroundColor = UIColor.redColor();
view.addSubview(shape);
}
override func viewDidAppear(animated: Bool) {
let shape2 = UIView(frame: CGRect(x: sec.frame.width/2, y: sec.frame.height/2, width: 100, height: 100));
shape2.backgroundColor = UIColor.greenColor();
view.addSubview(shape2);
}
}
Run Code Online (Sandbox Code Playgroud) viewdidload ×10
ios ×8
objective-c ×4
iphone ×3
swift ×3
appdelegate ×1
dealloc ×1
ibaction ×1
methods ×1
protocols ×1
rootview ×1
uiimageview ×1
uiview ×1
uiwindow ×1