我想像'ABPeoplePickerNavigationController'一样启动模态视图控制器,而不必创建包含视图控制器的导航控制器.
做类似的操作产生一个空白屏幕,没有导航栏的标题,并且没有为视图加载相关的nib文件,即使我在调用'init'时调用initWithNibName.
我的控制器看起来像:
@interface MyViewController : UINavigationController
@implementation MyViewController
- (id)init {
NSLog(@"MyViewController init invoked");
if (self = [super initWithNibName:@"DetailView" bundle:nil]) {
self.title = @"All Things";
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"All Things - 2";
}
@end
Run Code Online (Sandbox Code Playgroud)
使用AB控制器时,您所做的只是:
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
[picker release];
Run Code Online (Sandbox Code Playgroud)
ABPeoplePickerNavigationController声明为:
@interface ABPeoplePickerNavigationController : UINavigationController
Run Code Online (Sandbox Code Playgroud)
另一种创建模态视图的方法,如Apple的"适用于iPhone OS的View Controller编程指南"中所述:
// Create a regular view controller.
MyViewController *modalViewController = [[[MyViewController alloc] initWithNibName:nil bundle:nil] autorelease]; …Run Code Online (Sandbox Code Playgroud) 我将调用什么对象/方法来获取当前时间(以毫秒为单位)(或高精度)来帮助测量方法执行的时间长度?
NSDate的timeIntervalSinceDate将返回以秒为单位测量的NSInterval.我正在寻找更精细的东西,类似于Java的System.currentTimeMillis.
objective-c/CocoaTouch中是否有相同的版本?
我使用NSOperationQueue在两个线程之间传递一些NSManagedObject数据,并发级别最大为1,我想要一些关于我是否正确执行此操作的建议.
由于NSManagedObject不是线程安全的,因此我通过NSOperation派生类将Threadman(主线程)中的NSManagedObjectID发送到ThreadB.一般工作流程:
ThreadA(主线程):
- 创建NSPersistentStoreCoordinator
- 创建主NSManagedObjectContext(1)
创建NSManagedObjectContext(2)以在workerThread中使用
创建MyNSOperationItem,传递NSManagedObjectContext并将MyNSOperationItem添加到NSOperationQueue
ThreadB(NSOperationQueue的主题):
- NSOperation派生类将
使用提供的objectID 从持久性存储中检索数据.
我的NSOperation类看起来像这样:
@interface MyNSOperationItem: NSOperation
{
// MyNSOperationItem is created in thread1 and MOC will be
// set on creation
NSManagedObjectContext *threadedMOC;
NSManagedObjectID *workItemObjectID;
}
@end
Run Code Online (Sandbox Code Playgroud)
那么我的NSOperation派生类是否可以引用NSManagedObjectContext或者我应该将第二个NSManagedObjectContext存储在其他位置?由于这是一个队列,因此将创建许多MyNSOperationItem实例,每个实例都指向相同的NSManagedObjectContext.
在xcode 3.2.1之前,您可以通过键盘快捷键(Cmd + Option + L/R箭头键)循环浏览历史文件列表.
现在,这组键将为您提供文件中的历史记录(即您在此文件中执行的所有操作).
有没有办法只在您在历史记录列表中打开的文件之间使用键盘进行导航?
我有一个单项HTML选择框,我想在将选择更改为新项目之前找出选择的项目.
到更改事件被触发时,已经太晚了:
$("select").change(function () {
var str = "";
$("select option:selected").each(function () {
// this will get me the current selected item (the new one)
str += $(this).text() + " "; });
})
Run Code Online (Sandbox Code Playgroud)
文档说'当控件失去输入焦点并且自获得焦点后其值已被修改时,更改事件将触发.
但是,捕获'blur'事件似乎也不是正确的事件,并且没有"onFocusLost"类型的事件.
这是否可以跨浏览器兼容的方式,没有很多箍跳?
似乎至少有三个不同的库用于从HTTP请求中提取JSON数据.
我有什么理由选择其中一个或者所有这些都是相同的,速度和最小的bugginess?
我正在处理的数据可能会有一些半复杂的JSON字符串.
对于Facebook和其他一些iPhone应用程序,我已经看到了看起来像UITableView的东西,其中顶行不在视图中而其他行被渲染.然后,当用户向上滚动时,第一行变得可见.通常,最顶行是"加载更多..."项.
有没有一个技巧让第二行看起来像表中的第一行?
我有一个依赖于NSUserDefaults的类,我正在尝试进行单元测试,并且我将NSUserDefaults作为模拟提供给我的测试类.运行测试时,我收到错误:
OCMockObject [NSUserDefaults]:调用了意外的方法:dictionaryForKey:@"response"
我正在尝试模拟NSUserDefaults类的这个实例方法:
- (NSDictionary *)dictionaryForKey:(NSString *)defaultName;
Run Code Online (Sandbox Code Playgroud)
使用通话格式:
[[[mockClass stub] andReturn:someDictionary] dictionaryForKey:@"aKey"]
Run Code Online (Sandbox Code Playgroud)
告诉mock它需要期望dictionaryForKey方法.但不知何故,这是没有记录或不是正确的事情告诉模拟预期,因为错误告诉我,模拟从来不知道期待'dictionaryForKey'调用.
我调用存根和返回的方式看起来与这个问题非常相似,但在那个问题中,海报说他们获得了返回值.我的测试用例:
-(void)testSomeWork
{
id userDefaultsMock = [OCMockObject mockForClass:[NSUserDefaults class]];
MyClass *myClass = [[MyClass alloc] initWith:userDefaultsMock];
NSDictionary *dictionary = [NSDictionary dictionary];
[[[userDefaultsMock stub] andReturn:dictionary] dictionaryForKey:@"response"];
BOOL result = [myClass doSomeWork];
STAssertTrue(result, @"not working right");
[myClass release];
[userDefaultsMock verify];
}
Run Code Online (Sandbox Code Playgroud)
我的课:
@implementation MyClass
@synthesize userDefaults;
- (id)initWith:(NSUserDefaults *aValue)
{
if (self = [super init])
{
self.userDefaults = aValue;
}
return self;
} …Run Code Online (Sandbox Code Playgroud) iphone ×5
objective-c ×5
cocoa ×1
core-data ×1
jquery ×1
json ×1
ocmock ×1
selecteditem ×1
xcode ×1