我差不多完成了UITableViewCell一个UITextField用它来实现.而不是经历CGRectMake,UITableViewCell.contentView我已经以更简单的方式实现它:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Cell"];
[cell setSelectionStyle:UITableViewCellSelectionStyleBlue];
amountField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 190, 30)];
amountField.placeholder = @"Enter amount";
amountField.keyboardType = UIKeyboardTypeDecimalPad;
amountField.textAlignment = UITextAlignmentRight;
amountField.clearButtonMode = UITextFieldViewModeNever;
[amountField setDelegate:self];
[[cell textLabel] setText:@"Amount"];
[cell addSubview:amountField];
return cell;
}
Run Code Online (Sandbox Code Playgroud)
然后我还实现了该didSelectRow方法,重新设置textField以允许显示其他字段的输入视图.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[amountField resignFirstResponder];
...
}
Run Code Online (Sandbox Code Playgroud)
这很顺利,只有表中还有其他行,当选择其他行时,整个单元格被选中并变成蓝色,而我的UITextField没有,我的意思是选择了字段,我可以输入文字但是没有选择单元格.我测试了它并发现问题在于:
[cell addSubview:amountField];
Run Code Online (Sandbox Code Playgroud)
这似乎打破了可选择的单元格行为,甚至添加它[cell contentView]都不能解决这个问题.我错过了什么?
我试图@interface在.m文件中声明一个类别的私有.
对于正常的课程,我会这样做:
@interface ClassA ()
@end
@implementation ClassA
@end
Run Code Online (Sandbox Code Playgroud)
它会很顺利.
对于我尝试过类别的课程:
@interface ClassA (CategoryA) ()
@end
@implementation ClassA (CategoryA)
@end
Run Code Online (Sandbox Code Playgroud)
但它给出了各种不同的错误.我试图"扩展"一个类别,通过这种语法扩展类的方式@interface ClassA ().
我希望为该类别提供私有方法,并且我想知道,如果在暴露的接口中,我可以@interface在.m文件中放置第二个类别,它不会在类本身之外公开实例变量和方法.
像这样的东西:
ClassA的+ categoryA.h
@interface ClassA (CategoryA)
<some public methods>
@end
Run Code Online (Sandbox Code Playgroud)
ClassA + categoryA.m文件
@interface ClassA (CategoryA)
<some private methods>
@end
@implementation ClassA (CategoryA)
<here I want to be able to call the private methods above>
@end
Run Code Online (Sandbox Code Playgroud)
现在这是在Xcode中给我一个警告:
接口'ClassA'上类别'CategoryA'的重复定义
有没有办法得到这种行为?
我一直在谷歌上搜索一段时间,我仍然对iOS6感到惊讶,没有办法垂直对齐NSAttributedString不同大小的字符?特别是我试图将它作为UIButton标题属性垂直对齐,这是可行的吗?
我使用新的SpeechKit框架实现了语音识别.
但是,我找不到任何关于如何实现自动语音结束检测的指示.
有人知道这在某种程度上是否可行?
func startRecording() {
// check if recognition task is running
if recognitionTask != nil {
recognitionTask?.cancel()
recognitionTask = nil
}
// create an audio session for the audio recording
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryRecord) // recording
try audioSession.setMode(AVAudioSessionModeMeasurement) // measurement
try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
} catch {
print("audioSession properties weren't set because of an error")
}
// this will be sent to the Apple's servers
recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
// check if the device has …Run Code Online (Sandbox Code Playgroud) 我发现在一个看似简单的情况下使用 PromiseKit 6.13.1 非常困难。我有以下两个返回 a 的函数,Promise<String>但我似乎无法找到一种使用 ```firstly{}.then{} 语法来使用它们的方法:
func promiseGetJWTToken() -> Promise<String> {
return Promise<String> { seal in
let error: Error = NSError(domain: "", code: 2000)
getJWTToken { tokenJWT in
guard let tokenJWT = tokenJWT else {
seal.resolve(.rejected(error))
return
}
seal.resolve(.fulfilled(tokenJWT))
}
}
}
func promiseGetBEToken() -> Promise<String> {
return Promise<String> { seal in
let error: Error = NSError(domain: "", code: 2000)
getBEToken { result in
switch result {
case .success(let response):
guard let tokenBE = response.token else …Run Code Online (Sandbox Code Playgroud) 我正在尝试显示一个viewController xib视图,其视图显示在固定标题横幅(0,0,320,44)下,这是在应用程序窗口中添加的imageView.
这是因为我需要它在我导航多个视图控制器时粘在屏幕上.这是我正在做的项目的要求.
到目前为止,我尝试过:
使用点表示法和setter将XIB视图调整为适当的帧大小(0,0,320,416).
使用self.view.frame更改viewDidLoad中的帧= CGRectMake(0,44,320,416);
但它不起作用.有什么建议吗?
作为Cocoa/Obj-C的新手,我正在通过Aaron Hillegass的"Cocoa Programming for Mac OS X"一书,而且 - 现在我们还有机会使用GC来避免所有这些推理 - 我不是我确定我得到了一些保留的理由.
特别是在其中一个例子中,Aaron提供了良好的编程实践:
- (void) setFoo:(NSCalendarDate *)x
{
[x retain];
[foo release];
foo = x;
}
Run Code Online (Sandbox Code Playgroud)
我没有理由在方法的第一行保留x实例:
[x retain];
Run Code Online (Sandbox Code Playgroud)
这个实例的范围只是set方法,对吧?退出方法范围时,x实例应该被解除分配吗?此外,在将x分配给foo时:
foo = x;
Run Code Online (Sandbox Code Playgroud)
无论如何foo将指向x内存单元格,因此会增加指向对象的保留计数,不是吗?这应该确保不会释放内存.
那么,有什么意义呢?当然,我确信我遗失了一些东西,但不知道到底是什么.
谢谢,Fabrizio
好的,试图抓住最后一班火车来学习斯威夫特,我看到了类似的问题,但我没有让他们解决我的问题.
我有一个NSDictionary被调用的entries,其中一个值对应于key "TYPES"是一个NSArrayNSDictionaries.我试图循环后者NSDictionary并检索键的整数值"TID",我正在做:
for dict in entries["TYPES"] as NSDictionary {
let tid : Int = typeDict["TID"]
}
Run Code Online (Sandbox Code Playgroud)
但我收到的错误是:(key: AnyObject, value: AnyObject)没有名为'下标'的成员
我知道这是由于entries["TYPES"]存在anyObject!并来自Xcode 6 beta 6,其中大量的Foundation API已经过审计,可选的一致性,因此需要解包但我尽力解开没有成功,编译器总是抱怨不同事情.有人知道怎么做吗?
ios ×6
objective-c ×4
swift ×3
categories ×1
class ×1
cocoa ×1
cocoa-touch ×1
for-loop ×1
ios10 ×1
ios11 ×1
iphone ×1
iphone-x ×1
nsdictionary ×1
promise ×1
promisekit ×1
retaincount ×1
thenable ×1
uitableview ×1
uiview ×1
xcode ×1
xcode9 ×1