我想知道如何在基于WebView的应用程序中实现activityIndicator,我写了下面的代码,但指标没有出现.
webview在本地加载文件,因此加载速度非常快,但是当它加载外部页面时加载速度很慢,我需要指标...
FirstViewController.h
#import <UIKit/UIKit.h>
@interface FirstViewController :
UIViewController <UIWebViewDelegate>{
IBOutlet UIWebView *webview1;
NSURL *urlLocation;
IBOutlet UIActivityIndicatorView *m_activity;
}
@property (nonatomic, retain) UIActivityIndicatorView *m_activity;
- (IBAction)searchbutton:(id)sender;
- (IBAction)home:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)
FirstViewController.m
#import "FirstViewController.h"
@implementation FirstViewController
@synthesize m_activity;
// viewWillAppear loads every time younopen up this View
- (void)viewWillAppear:(BOOL)animated {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
urlLocation = [NSURL fileURLWithPath:filePath];
[webview1 loadRequest:[NSURLRequest requestWithURL:urlLocation]];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
//Initialization code
m_activity = …Run Code Online (Sandbox Code Playgroud) 我试图将一个bug缩小到最小可重复的情况并发现一些奇怪的东西.
考虑以下代码:
static NSString *staticString = nil;
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
if (staticString == nil) {
staticString = [[NSArray arrayWithObjects:@"1", @"2", @"3", nil] componentsJoinedByString:@","];
}
[pool drain];
NSLog(@"static: %@", staticString);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期待这段代码崩溃.相反,它记录:
2011-01-18 14:41:06.311 EmptyFoundation[61419:a0f] static: static:
Run Code Online (Sandbox Code Playgroud)
但是,如果我NSLog()改为:
NSLog(@"static: %s", [staticString UTF8String]);
Run Code Online (Sandbox Code Playgroud)
然后,它不会崩溃.
编辑更多信息:
排水后:
NSLog(@"static: %@", staticString); //this logs "static: static: "
NSLog(@"static: %@", [staticString description]); //this crashes …Run Code Online (Sandbox Code Playgroud) 我想构建一个类似于iPhoto '11中的NSCollectionView.我想在部分中分组几个图片,并创建一个部分标题.特定部分的节标题始终可见,直到该节的最后一个元素可见.你可以看看图片,看看我的意思.
编辑:我应该补充说,内容不是图像.

提前致谢
嗨,我有核心数据数据库与数字属性.他们是NSNumbers.默认值是0.0但是当我尝试做一些NSPredicated fetch时,我得到"'NSInvalidArgumentException',原因:'无效谓词:nil RHS'"只是因为属性值是0.0
谓词创建时使用:
[NSPredicate predicateWithFormat:@"(startValue => %@) AND (endValue <= %@) AND (someId == %@)",startNSNumber,endNSNumber, idString]
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题 ?
有没有办法使用NSCollectionView没有绑定?
cocoa objective-c cocoa-bindings nscollectionview nscollectionviewitem
在Apple的"Objective-C Programming Language"文档中,第48页说:
+ (Rectangle *)rectangleOfColor:(NSColor *) color
{
self = [[Rectangle alloc] init]; // BAD
[self setColor:color];
return self;
}
+ (id)rectangleOfColor:(NSColor *)color
{
id newInstance = [[Rectangle alloc] init]; // GOOD
[newInstance setColor:color];
return newInstance;
}
+ (id)rectangleOfColor:(NSColor *)color
{
id newInstance = [[self alloc] init]; // EXCELLENT
[newInstance setColor:color];
return newInstance;
}
Run Code Online (Sandbox Code Playgroud)
一个是坏的,一个是好的,另一个是优秀的.这是为什么?
我无法在任何地方找到这些信息,所以问这里.
究竟element.layer.shadowOffset = CGSizeMake(2.0, 2.0)]做了什么?
它对元素的偏移量是多少?
抬头:这是一个奇怪的问题.
我有一些非常有用的宏,我喜欢用来简化一些日志记录.例如,我可以做到Log(@"My message with arguments: %@, %@, %@", @"arg1", @"arg2", @"arg3"),那将得到扩展成包括像一个更复杂的方法调用self,_cmd,__FILE__,__LINE__,等等,这样我可以轻松地跟踪,事情越来越记录.这非常有效.
现在我想扩展我的宏,不仅可以使用Objective-C方法,还可以使用常规的C函数.问题是宏扩展中的self和_cmd部分.C函数中不存在这两个参数.理想情况下,我希望能够在C函数中使用同一组宏,但我遇到了问题.当我使用(例如)我的Log()宏时,我得到编译器警告self和_cmd未声明(这完全有道理).
我的第一个想法是做类似以下的事情(在我的宏中):
if (thisFunctionIsACFunction) {
DoLogging(nil, nil, format, ##__VA_ARGS__);
} else {
DoLogging(self, _cmd, format, ##__VA_ARGS__);
}
Run Code Online (Sandbox Code Playgroud)
这仍然会产生编译器警告,因为整个if()语句被替换代替宏,导致self和_cmd关键字出错(即使它们在函数执行期间永远不会被执行).
我的下一个想法是做这样的事情(在我的宏中):
if (thisFunctionIsACFunction) {
#define SELF nil
#define CMD nil
} else {
#define SELF self
#define CMD _cmd
}
DoLogging(SELF, CMD, format, ##__VA_ARGS__);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.我得到了"错误:'#'后面没有宏参数" #define. …
对于我的游戏iOS项目,我需要一个环形缓冲区.它应该类似于一个队列,其中元素输出并进入,但缓冲区中元素的总量应保持不变.
我使用java成功实现了环形缓冲区,但我不熟悉objective-c.我在网上找到了一个名为CHCircularBuffer的环形缓冲区实现:https://bitbucket.org/devartum/chdatastructures/src/4d6d7194ee94/source/CHCircularBuffer.m 但是我没能正确实现它.
循环缓冲区是名为TerrainManager的类的属性,它可以生成所有数学地形.
@interface TerrainManager : NSObject{
int terrainParts;
CHCircularBuffer* circularTerrainBuffer;
}
@property(nonatomic, retain) CHCircularBuffer *circularTerrainBuffer;
@end
Run Code Online (Sandbox Code Playgroud)
这是如何在TerrainManager的实现中初始化环形缓冲区
circularTerrainBuffer = [[CHCircularBuffer alloc] initWithCapacity:parts];
Run Code Online (Sandbox Code Playgroud)
这将创建缓冲区的实例,并将size属性设置为parts.现在我使用addObject方法将对象添加到缓冲区:
[circularTerrainBuffer addObject:[NSNumber numberWithDouble:0.2]];
Run Code Online (Sandbox Code Playgroud)
有时这行会收到错误"exec_bad_access".例如,当我初始化容量为15的缓冲区时,一切都很好,20我得到了错误.
我现在尝试从绘图发生的terrain类访问缓冲区.但每当我尝试访问对象时,我都会收到"bad_access"错误.
NSArray *arr = [terrainManager.circularTerrainBuffer allObjects];
Run Code Online (Sandbox Code Playgroud)
例如,这一行会产生错误.
所以我的代码有问题.也许我不理解缓冲区并以错误的方式添加对象.我不知道.任何想法或建议?
我已经将UINavigationBar的高度定制为100px,我想在这个自定义栏上添加按钮.
一切都很好,除了按钮似乎想要坐在导航栏的底部,无论如何.我不能让它与导航栏的中心或顶部对齐.

这是代码; 首先,我在app delegate中创建一个导航控制器,并在右侧添加一个按钮.
// set main navigation controller
temp *tempc = [[temp alloc] initWithNibName:@"temp" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:tempc];
UIBarButtonItem *navItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:nil action:nil];
[tempc.navigationItem setRightBarButtonItem:navItem];
[self.window addSubview:self.navigationController.view];
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
然后我在"临时"视图控制器中调整导航栏的大小,如下所示:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 100.0f);
[self.navigationController.navigationBar setFrame:frame];
[self.navigationController.navigationBar setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin];
}
Run Code Online (Sandbox Code Playgroud)
我还尝试向rightBarButtonItem添加自定义视图,但我无法将添加的自定义视图完全触及顶部.

这个不幸的尝试的代码:
// set main navigation controller
temp *tempc = [[temp alloc] initWithNibName:@"temp" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:tempc];
UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, …Run Code Online (Sandbox Code Playgroud) objective-c uinavigationbar uinavigationcontroller uinavigationitem ios
objective-c ×7
cocoa ×3
ios ×2
iphone ×2
xcode ×2
autorelease ×1
c ×1
class-method ×1
conditional ×1
ios7 ×1
iphoto ×1
macros ×1
nsnumber ×1
nspredicate ×1