在我以编程方式启动的其中一个视图中,我看到了对' loadView/ viewdidLoad'的5个不同调用,但我不明白为什么这么多被调用.有人可以向我解释这背后的机制吗?
我以下列方式在父级UIViewController(TabBar+ NavigationBar应用程序的一部分)实例中启动视图:
MainEditController *editController = [[MainEditController alloc] initWithNibName:@"MainEditView" bundle:nil];
[self.navigationController pushViewController:editController animated:YES];
[editController release];
Run Code Online (Sandbox Code Playgroud)
然后我记录MainEditController's viewDidLoad和loadView方法(并调用他们各自的超级方法).
' MainEditView'nib包含3个项目:-File的所有者(类型MainEditController), - 第一个响应者(类型UIResponder)-View(类型UIView)
视图插座连接到文件所有者,视图中没有元素.我打算做的是在主视图中添加几个子视图,并根据特定条件显示其中一个子视图.
我认为两者viewDidLoad并loadView会得到被称为控制器内的许多意见(1在这种情况下),但似乎并没有成为一个有效的假设.
我有NSPopover一个Cocoa应用程序,并且自狮子 - 它呈现为半透明,所以它覆盖的任何文本字段,表格等 - 这些现在显示在它下面,它看起来很奇怪.我检查了Apple的类引用文档,但似乎没有办法将其更改为不透明.似乎可用于指定外观的唯一两个属性值是NSPopoverAppearanceMinimal,和NSPopoverAppearanceHUD- 但这些值似乎都与alpha或不透明度无关.NSPopover通过覆盖drawRect 来制作不透明的唯一方法是什么?还是有人知道更好的方法吗?它似乎适用UIPopover于iOS,但不适NSPopover用于Cocoa ......
奇怪的行为NSMutableArray.
我已经创建了对象并填充了它.
NSMutableArray *array = [[NSMutableArray alloc]
initWithObjects:@"1",@"2",@"3",@"4", nil];
[array removeObjectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
在删除它之前看起来像:
array NSMutableArray * 0x1040b5e0
[0] id 0x00088a44 @"1"
[1] id 0x00088a54 @"2"
[2] id 0x00088a64 @"3"
[3] id 0x00088a74 @"4"
Run Code Online (Sandbox Code Playgroud)
删除FIRST元素后:
array NSMutableArray * 0x1040b5e0
[0] id 0x00000000
[1] id 0x00088a54 @"2"
[2] id 0x00088a64 @"3"
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
我正在制作UICollectionView一些UICollectionViewCells包含一个的地方UITableView.
这很好用,一切都很好,直到我点击UICollectionViewCell其他地方而不是UITableView.这会导致在表中的setHighlighted所有方法上调用该方法UITableViewCells.
下面是一个粗略的观点UICollectionViewCell.在UITableView从"单元一"到"单元三"只有跨越.点击此表外的任何位置,但内部UICollectionViewCell会导致单元格突出显示.
-------------------------
| Title goes here |
| |
-------------------------
| |
| Cell one |
-------------------------
| |
| Cell two |
-------------------------
| |
| Cell three |
-------------------------
| Button outside table |
|-----------------------|
Run Code Online (Sandbox Code Playgroud)
调用堆栈看起来像这样.
[MyTableViewCell setHighlighted:]
[UICellHighlightingSupport highlightView:]
UIApplicationMain
main
Run Code Online (Sandbox Code Playgroud)
似乎UICollectionViewCell前锋是所有细胞的一个亮点命令.
我通过setHighlighted在UITableViewCell子类中重载方法而不是调用超级实现来解决这个问题.虽然看起来有点hacky,我想知道这种行为是否可以以某种方式避免.
编辑:
我认为这种行为来自UICollectionCellView于所有孩子的呼叫setHighlighted.我理解的在大多数其他情况下都很有用.
我正试图UIImageView在窗口中发起页面卷曲过渡.这段代码在我的主init方法中:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationDelay:delay];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDidStopSelector:@selector(animCompleteHandler:finished:context:)];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:splashImage cache:YES];
splashImage.frame = CGRectMake(-320, 0, 10, 10);
//[splashImage removeFromSuperview];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)
图像动画的位置和大小,但没有卷曲.如果我取消注释,removeFromSuperView它就会立即消失.有任何想法吗?
更新:
更改了代码,因此它使用Lars梦幻般的触发动画的方式,包括动画和回调......
[UIView animateWithDuration:1.5
delay:delay
options: UIViewAnimationTransitionCurlUp
animations:^{splashImage.alpha = 0;}
completion:^(BOOL finished){[splashImage removeFromSuperview];}
];
Run Code Online (Sandbox Code Playgroud)
不幸的是,页面卷曲不会发生.它确实消失了.
我不确定这是否与语法有关,或者它SplashImage是我主视图对象中的UIImageView类UIWindow.也许它需要在a UIView中创建过渡.
请告诉我如何可以存储 NSMutableArray成NSUserDefaults.
我有一个名为data(NSArray)的数组.我想在NSMutableArray被调用时添加这个数组mArray.
[mArray addObject:data];
[prefs setObject:mArray forkey:@"test"];
[prefs synchronize];
Run Code Online (Sandbox Code Playgroud)
并希望存储mArray价值NSUserDefaults.请告诉我如何存储和检索这些值.上面的代码只存储没有附加值的最后一个值NSUserDefaults.
谢谢
我有一个UIWebView加载来自的文本htmlString.我需要当用户选择文本的一部分并按下按钮时,我将能够提取它以便在其他地方使用它,所以我使用此代码:
// The JS File
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"HighlightedString" ofType:@"js" inDirectory:@""];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
[WebV2 stringByEvaluatingJavaScriptFromString:jsString];
// The JS Function
NSString *startSearch = [NSString stringWithFormat:@"getHighlightedString()"];
[WebV2 stringByEvaluatingJavaScriptFromString:startSearch];
NSString *selectedText = [NSString stringWithFormat:@"selectedText"];
NSString * highlightedString = [WebV2 stringByEvaluatingJavaScriptFromString:selectedText];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Highlighted String"
message:highlightedString
delegate:nil
cancelButtonTitle:@"Oh Yeah"
otherButtonTitles:nil];
[alert show];
Run Code Online (Sandbox Code Playgroud)
同时HighlightedString.js:
/*!
------------------------------------------------------------------------
// Search Highlighted String
------------------------------------------------------------------------
*/
var selectedText …Run Code Online (Sandbox Code Playgroud) 我正在尝试UILabel根据标签中的文本数量来更改a的高度.
我可以计算标签所需的尺寸,但是当我尝试设置UILabel框架时它就不会改变.
以下是我的代码.即使我将最后一行中的size.height替换为类似于500的大小,UILabel帧的大小也不会改变
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"GameItemCell";
GameItemCell *cell = (GameItemCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"GameItemCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
GameItem* item = [_hunt.gameItems objectAtIndex: indexPath.row];
cell.itemHeaderLabel.text = [NSString stringWithFormat:@"#%d - (%d pts)", indexPath.row+1, item.itemPoints];
UILabel* textLabel = cell.itemTextLabel;
textLabel.text = item.itemText;
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGRect frame = cell.itemTextLabel.frame;
CGSize textSize = { frame.size.width, 20000.0f };
CGSize sizeOneLine = [@"one line" …Run Code Online (Sandbox Code Playgroud) 出于某种原因,我无法使用post方法将jpeg文件上传到服务器 NSURLRequest
我有一个Android应用程序使用相同的PHP代码,可以通过将图像转换为字节数组,然后使用base64编码发送和接收上传和下载图像.
我的iPhone应用程序下载图像正常,php脚本使用base64进行编码,我在我的iPhone应用程序中使用base64解码器,然后我将其转换为图像.这很好用.
但是,上传图像不起作用.
我将图像转换为base64编码的字符串(我使用了几种不同的base64编码方法,它们都给出相同的结果)然后我发布到服务器,在服务器端解码并保存到服务器上的文件.
服务器上生成的解码文件是损坏的jpeg图像.损坏的文件大小是应有的字节数的3倍.
为上载生成的base64编码字符串也与从服务器下载相同jpeg文件时生成的base64编码字符串(即我使用ftp服务上传的有效映像文件)非常不同.
下面显示了我的代码以及用于接收图像的php脚本.
我相信转义字符会发生一些事情,导致base64字符串在传输过程中被破坏但无法解决.
为什么我的base64字符串在传输过程中被破坏了?
NSString* comments = @"comments to go with image";
NSData *data = UIImageJPEGRepresentation(_imageView.image, 1);
NSString *base64EncodedImage = [NSString base64StringFromData: data length: data.length];
//load the team posts so we know what items have been posted and what haven't
NSMutableDictionary *postDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
comments, @"comment",
base64EncodedImage , @"image",
nil];
NSMutableArray *parts = [[NSMutableArray …Run Code Online (Sandbox Code Playgroud) 我有一个与服务器连接的iOS应用程序.如果我们断开连接,我希望能够关闭顶视图控制器以返回到"连接到服务器"视图控制器.问题是可能在任何时候发生断开连接,包括在视图控制器之间的转换期间.
视图控制器层次结构如下:
ConnectingToServerViewControllerSignInViewControllerMainAppViewController检测到断开连接时,我希望视图层次结构折叠回:
ConnectingToServerViewController因此,当检测到断开连接时,调用此方法ConnectingToServerViewController以解除它所呈现的任何内容并返回尝试连接到服务器:
- (void)restartSession
{
if (self.presentedViewController) {
[self dismissViewControllerAnimated:NO completion:nil];
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在视图转换发生时尝试关闭,我会收到诸如此类的错误
*** Assertion failure in -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:], /SourceCache/UIKit/UIKit-2380.17/UIWindowController.m:211
attempt to dismiss modal view controller whose view does not currently appear. self = <YYYYYViewController: 0x2089c8a0> modalViewController = <XXXXXViewController: 0x208e6610>
attempt to dismiss modal view controller whose view does not currently appear. self = <WWWWWWViewController: 0x1fd9e990> modalViewController = <YYYYYViewController: 0x2089c8a0>
Run Code Online (Sandbox Code Playgroud)
第一个将崩溃应用程序,第二个将不会解雇任何东西,并继续显示当前显示的视图控制器.
思考:
objective-c ×7
iphone ×5
ios ×3
cocoa-touch ×2
cocoa ×1
nspopover ×1
nsurlrequest ×1
opacity ×1
text ×1
uiimageview ×1
uikit ×1
uitableview ×1
uiwebview ×1
xcode4.3 ×1