小编Vin*_*ngh的帖子

多次调用viewDidLoad/loadView

在我以编程方式启动的其中一个视图中,我看到了对' 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 viewDidLoadloadView方法(并调用他们各自的超级方法).

' MainEditView'nib包含3个项目:-File的所有者(类型MainEditController), - 第一个响应者(类型UIResponder)-View(类型UIView)

视图插座连接到文件所有者,视图中没有元素.我打算做的是在主视图中添加几个子视图,并根据特定条件显示其中一个子视图.

我认为两者viewDidLoadloadView会得到被称为控制器内的许多意见(1在这种情况下),但似乎并没有成为一个有效的假设.

iphone

6
推荐指数
2
解决办法
5710
查看次数

想要改变NSPopover的不透明度 - 是否可能?

我有NSPopover一个Cocoa应用程序,并且自狮子 - 它呈现为半透明,所以它覆盖的任何文本字段,表格等 - 这些现在显示在它下面,它看起来很奇怪.我检查了Apple的类引用文档,但似乎没有办法将其更改为不透明.似乎可用于指定外观的唯一两个属性值是NSPopoverAppearanceMinimal,和NSPopoverAppearanceHUD- 但这些值似乎都与alpha或不透明度无关.NSPopover通过覆盖drawRect 来制作不透明的唯一方法是什么?还是有人知道更好的方法吗?它似乎适用UIPopover于iOS,但不适NSPopover用于Cocoa ......

cocoa opacity nspopover

6
推荐指数
1
解决办法
1912
查看次数

NSMutableArray removeObjectAtIndex奇怪的问题.

奇怪的行为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)

我在这做错了什么?

objective-c nsmutablearray

6
推荐指数
1
解决办法
2469
查看次数

UICollectionViewCell中的UITableView,点击单元格时会突出显示所有UITableViewCell

我正在制作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前锋是所有细胞的一个亮点命令.

我通过setHighlightedUITableViewCell子类中重载方法而不是调用超级实现来解决这个问题.虽然看起来有点hacky,我想知道这种行为是否可以以某种方式避免.

编辑: 我认为这种行为来自UICollectionCellView于所有孩子的呼叫setHighlighted.我理解的在大多数其他情况下都很有用.

objective-c uitableview ios

6
推荐指数
1
解决办法
1651
查看次数

iPhone页面卷曲过渡动画

我正试图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是我主视图对象中的UIImageViewUIWindow.也许它需要在a UIView中创建过渡.

iphone objective-c uiimageview

5
推荐指数
1
解决办法
1万
查看次数

如何在NSUserDefaults中存储NSMutableArray

请告诉我如何可以存储 NSMutableArrayNSUserDefaults.

我有一个名为data(NSArray)的数组.我想在NSMutableArray被调用时添加这个数组mArray.

[mArray addObject:data];
[prefs setObject:mArray forkey:@"test"];
[prefs synchronize];
Run Code Online (Sandbox Code Playgroud)

并希望存储mArray价值NSUserDefaults.请告诉我如何存储和检索这些值.上面的代码只存储没有附加值的最后一个值NSUserDefaults.

谢谢

iphone objective-c

5
推荐指数
1
解决办法
6710
查看次数

从uiwebview Xcode中获取所选文本

我有一个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)

text uiwebview xcode4.3

5
推荐指数
1
解决办法
2983
查看次数

UILabel不会更改setFrame的高度

我正在尝试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)

iphone cocoa-touch objective-c ios

5
推荐指数
1
解决办法
4821
查看次数

Base64编码图像在传输到服务器期间损坏

出于某种原因,我无法使用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)

iphone cocoa-touch objective-c nsurlconnection nsurlrequest

5
推荐指数
2
解决办法
3547
查看次数

如何在任何时候(甚至在转换期间)或解除视图控制器安全时解除视图控制器?

我有一个与服务器连接的iOS应用程序.如果我们断开连接,我希望能够关闭顶视图控制器以返回到"连接到服务器"视图控制器.问题是可能在任何时候发生断开连接,包括在视图控制器之间的转换期间.

视图控制器层次结构如下:

  1. ConnectingToServerViewController
  2. SignInViewController
  3. MainAppViewController
  4. 其他视图控制器

检测到断开连接时,我希望视图层次结构折叠回:

  1. 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)

第一个将崩溃应用程序,第二个将不会解雇任何东西,并继续显示当前显示的视图控制器.

思考:

  1. 由于我们不知道何时开始延迟,延误将无效
  2. 有没有办法跟踪视图转换何时完成?
  3. 应该所有视图控制器覆盖willAppear,didAppear并在可以安全解除时提醒应用程序?
  4. 或许不是解雇,我应该设置一个新的根视图控制器?
  5. 我确保所有重写的视图(将| do)(dis)?出现方法调用适当的超级方法.
  6. 任何需要所有视图控制器覆盖视图(did | …

objective-c uiviewcontroller uikit ios

5
推荐指数
1
解决办法
4274
查看次数