我有一个窗口,一个标签,一个按钮和一个NSObject.
我想要做的第一件事是将NSObject的类更改为我的自定义控制器的类.
问题是,我似乎无法选择它.无论我选择哪个对象,检查员面板都会显示"无选择".为什么?我很困惑.
当我将UIButton的alpha设置为0时,它的行为就像它没有启用一样.我已经检查了,即使按钮确实保持启用状态(虽然不可见(但没有隐藏,我也检查过)),它停止工作.
即使它的alpha为0,有没有办法让它可以点击?
为这样一个新手问题道歉.
我编写了一个类方法,它接受三个字符串并返回一个子字符串.
我编写了条件语句,只有在满足某些条件时才允许返回子字符串.但是,如果无法提取子字符串,我不确定需要返回什么.目前我有方法返回默认的'错误'字符串,但我觉得这可能不是最好的做法.
这是我的方法:
+(NSString *)ExtractSubstringFrom:(NSString *)sourceString
Between:(NSString *)firstString And:(NSString *)secondString {
NSRange stringRangeOne = [sourceString rangeOfString:secondString];
NSString *resultString;
if (stringRangeOne.location != NSNotFound) {
resultString = [sourceString substringToIndex:stringRangeOne.location];
}
NSRange stringRangeTwo = [sourceString rangeOfString:firstString];
if (stringRangeTwo.location !=NSNotFound) {
resultString = [resultString substringFromIndex:stringRangeTwo.location+stringRangeTwo.length];
return resultString;
}
else return @"Error!";
//To do... improve error checking
}
Run Code Online (Sandbox Code Playgroud)
如何使此方法更加错误友好?
为了整洁和可重用性,我正在考虑在一个类中放入一堆实用程序方法.该类不需要任何自己的属性,因此我将方法定义为类方法; 我认为没有真正需要让这个类的实例浮动...
......还是在那儿?效率有差异吗?(一个引人注目的?)或者调用类方法的行为方式与调用类的一部分相同吗?
我相信我正确地遵循了这个例子.(https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/StatusBar/Tasks/creatingitems.html)
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSStatusItem *testItem;
NSMenu *testMenu;
}
Run Code Online (Sandbox Code Playgroud)
...
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
testMenu = [[NSMenu alloc] init];
[testMenu addItemWithTitle:@"An Item" action:nil keyEquivalent:nil];
[testMenu addItemWithTitle:@"Another Item" action:nil keyEquivalent:nil];
NSStatusBar *bar = [NSStatusBar systemStatusBar];
testItem = [[NSStatusItem alloc] init];
testItem = [bar statusItemWithLength:NSVariableStatusItemLength];
[testItem setTitle: @"X"];
[testItem setHighlightMode:YES];
[testItem setMenu:testMenu];
[testItem setEnabled:YES];
}
Run Code Online (Sandbox Code Playgroud)
我建立并运行.没有新的状态栏项目可供查看.为什么不?如果我是一个无知的新手,请原谅我.我认为我忽略了一些基本的东西.
我试图找到一个自昨晚以来困扰我的问题的答案.
NSRange searchRange.location = 0;
NSRange searchRange.length = [string length]; // > 2000 characters long
NSString *substring = @"substring"; // Occurs within string several times
NSRange substringRange = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:searchRange];
// Some code here. Create substring and add it to array.
// Move the search range on
searchRange.location = substringRange.location + substringRange.length;
// fails
substringRange = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:searchRange];
Run Code Online (Sandbox Code Playgroud)
第一个[string rangeOfString ...]方法无故障地调用,但第二个调用导致以下错误:
* - [__ NSCFString rangeOfString:options:range:locale:]:范围或索引超出范围
据我所知,问题是由新值赋值给searchRange.location引起的 - 删除该语句会导致第二次成功调用该方法.看看调试器,这些值看起来像预测的那样 - 没有任何超出范围的东西 - 而且我还在监视器上尖叫.
这只是简单的添加......不是吗?
objective-c ×4
class-method ×1
cocoa ×1
cocoa-touch ×1
ipad ×1
nsrange ×1
nsstatusitem ×1
performance ×1
uibutton ×1
xcode4 ×1