小编way*_*neh的帖子

为Xcode 4创建/使用Singleton NSMutableArray的正确方法

我已经回顾过(和尝试过)一些关于Singletons和NSMutableArrays的线程.我是Objective-C的新手,所以请耐心等待.

我只想创建一些可以从任何视图/ .m文件访问的数组.

Singleton的最佳(或最简洁)编码是什么?

下面是我现在的内容,我在.m'@implementation'得到1个警告 - "不完整的实现"在视图.m文件中使用1个错误 - "初始化元素不是编译时常量"

这是我现在的代码 - 我的GlobalData.h文件:

#import <Foundation/Foundation.h>

@interface GlobalData : NSObject {    
    NSMutableArray *listOfHeadings;
    NSMutableArray *listOfItems1;
    NSMutableArray *listOfItems2;
}    
@property(nonatomic,retain)NSMutableArray *listOfHeadings;
@property(nonatomic,retain)NSMutableArray *listOfItems1; 
@property(nonatomic,retain)NSMutableArray *listOfItems2; 
+(GlobalData*)getInstance;  
@end
Run Code Online (Sandbox Code Playgroud)

我的GlobalData.m文件:

#import "GlobalData.h"

@implementation GlobalData
@synthesize listOfHeadings;
@synthesize listOfItems1;
@synthesize listOfItems2;
static GlobalData *instance=nil; 

+(GlobalData *)getInstance    
{    
    @synchronized(self)    
    {    
        if(instance==nil)    
        {    
            instance= [GlobalData new];    
        }    
    }    
    return instance;    
}    
@end
Run Code Online (Sandbox Code Playgroud)

并在视图中.m文件(简化):

#import GlobalData.h

GlobalData *globDat=[GlobalData getInstance]; //error occurs here
Run Code Online (Sandbox Code Playgroud)

有人可以指出麻烦,如果有更好的编码,请赐教 - 谢谢!

编辑

这是我尝试使用的一些链接:

我可以在多个视图应用程序中使用单个NSMutableArray吗?

iPhone帮助单身类

iphone xcode objective-c

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

强制文本垂直适合UILabel?

我知道有很多类似的线程,但我已经阅读了所有这些(据我所知)并且没有看到我遇到的同样问题.

我试图将所有文本显示在垂直标签中.

让我解释一下 - 字体并不总是以相同的方式创建,因此它们的总高度可能相同(例如24pts).然而,Ascender和Descender变化很大 - 一种字体可能大部分高于基线,而另一种字体大多数低于基线.因此,具有不同字体的相同文本可能并不总是显示在同一视图/标签中.

例如,请参阅下面的屏幕截图.

第一个是Helvetica-Bold 300pts.第二个是Apple Gothic 300pts.

注意"g"的底部是如何用Helvetica(以及许多其他字体)切断的 - 尝试一下,你会看到.

黑体,Bold300

AppleGothic

所以我的问题是:我希望能够看到整个文本,无论字体如何.如果"Helvetica"示例中的文本可以在标签内向上移动(并居中),则可以解决我的问题.为了更容易,我只需要显示一行.

不幸的是,我见过的解决方案都没有涉及字体的下降和上升,并想出如何在Rect中绘制文本而不是裁剪.请注意,各种线程中的"VerticalAlignment"解决方案无法解决此特定问题.

有没有人对此有任何想法或解决方案?

iphone xcode objective-c

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

UICollectionView只有1个垂直"列"仍然流入2列

我创建了我认为是使用xCode 5,iOS 7,Storyboards,AutoLayout OFF的基本UICollectionView,但是我得到了奇怪的结果.

我曾希望创建一个单独的"列" - 也就是说,所有单元格垂直堆叠,没有并排(例如TableView):

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

但是,我得到了这样的2列(我只能看到我是否水平滚动):

| 1 | | 2 |

| 3 | | 4 |

| 5 |

我的CollectionView与我的单元格的宽度相同,1个部分,没有插入,没有标题,滚动方向=垂直,布局=流程.

编辑:我尝试通过故事板添加5个单元格,他们按照我的要求排列,但在编程时添加仍然不排队...

EDIT2:FYI,我还有另一个UICollectionView工作正常 - 唯一的区别是它是4x4

如何实现"单列"布局?

iphone ios

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

如何将图像添加到 UIToolBar?

我想向用户无法与之交互的 UIToolBar 添加图像。它本质上只是一个非交互式指示器,如徽章。

这可能吗?如果是这样,如何?

iphone xcode objective-c

4
推荐指数
1
解决办法
3486
查看次数

需要很好地解释集合和项目的 MPMediaQuery 结果

我需要一些帮助来理解 MPMediaQuery 以及如何访问结果,以便我可以将查询与 setQueue(with:) 一起使用。

这是我为什么感到困惑的一个例子。

在我的图书馆中,我有一位拥有 3 张专辑的艺术家。我的目标是查询这 3 张专辑,按顺序排列每首曲目:

  • 专辑A
    • 轨道 1
    • 轨道 2
    • 轨道 3
  • 专辑2
    • 轨道 1
    • 轨道 2
    • 轨道 3
  • 专辑3
    • 轨道 1
    • 轨道 2
    • 轨道 3

当我使用此查询时,专辑/歌曲没有按预期顺序排列。即使 shuffle 没有打开,它们也几乎看起来是随机的。

var qryArtists = MPMediaQuery()
qryArtists = MPMediaQuery.artists()
qryArtists.groupingType = MPMediaGrouping.albumArtist
let currLoc = qryArtists.collectionSections![indexPath.section].range.location
myMP.setQueue(with: qryArtists.collections![indexPath.row + currLoc])
for junk in qryArtists.collections![indexPath.row + currLoc].items{
    print(" collections title \(junk.albumTitle!) track \(junk.albumTrackNumber) song \(junk.title!)")
}
Run Code Online (Sandbox Code Playgroud)

我得到这些结果:

collections title Cosmic Thing track 8 song Channel Z collections title …

mpmusicplayercontroller mpmediaquery swift3

2
推荐指数
1
解决办法
1532
查看次数

我可以将Class的实例复制到另一个Class实例吗?

我是Objective-C的新手,所以我可能会错误地说这个.我已经创建了一个Class"Message",我将它实例化为:

Message *newmsg=[[Message alloc]init];
Run Code Online (Sandbox Code Playgroud)

当我访问我的内容时newmsg(例如):

NSString *junk=((Message *)[globDat.allMsgs objectAtIndex:i]).text

我想交换两个实例的内容.特别是因为班上有多个项目.例如,这个想法是这样的(伪代码)

Message *TopMsg=[[Message alloc]init];
Message *BottomMsg=[[Message alloc]init];
Message *tmpmsg=[[Message alloc]init];
...
//enter values for TopMsg.xyz and BottomMsg.xyz
....
//swap
tmpmsg=TopMsg;
TopMsg=BottomMsg;
BottomMsg=tmpmsg;
Run Code Online (Sandbox Code Playgroud)

编辑:我忽略了在Singleton中使用数组来保存多个Message实例.您可以在示例中看到有关访问内容的信息.

所以只是交换指针给我一个错误:"表达式不可分配"

我试过这个(其中allMsgs是Singleton中的数组):

GlobalData *globDat=[GlobalData getSingleton];
Message *newmsg=[[Message alloc]init];
newmsg=[globDat.allMsgs objectAtIndex:0];
[globDat.allMsgs objectAtIndex:0]=[globDat.allMsgs objectAtIndex:1]; //<--ERROR
Run Code Online (Sandbox Code Playgroud)

还有这个:

GlobalData *globDat=[GlobalData getSingleton];
Message *newmsg=[[Message alloc]init];
newmsg=[globDat.allMsgs objectAtIndex:0];
(Message *)[globDat.allMsgs objectAtIndex:0]=(Message *)[globDat.allMsgs objectAtIndex:1]; //<--ERROR
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

objective-c

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

如何在TableView中添加向左滑动手势并在Swift 3中滑动时返回单元格位置

我有一个TableView,它已被编码为在使用该didSelectRowAt方法选择的任何单元格时执行操作.

现在,我想向表格(或单元格)添加一个向左滑动手势,这样我可以在滑动单元格时执行辅助操作,而不是轻敲单元格.

1)我希望细胞在滑动时向左移动,但我不想在细胞移动的空间中添加按钮.

2)相反,我希望能够将单元格"拖动"到某个点(比如说中途),然后用indexPath执行辅助操作(所以我知道哪个单元被拖动).

3)如果用户停止拖动或放开单元格,我希望它返回到它的起始位置并且不会发生任何操作.

我已经看过很多样本可以做各种各样的部分但是大多数都在Obj-C中,或者在与单元格相同的行中插入按钮.

另外,将Gesture添加到每个单元格中会更好吗?将它添加到表中似乎更聪明......

编辑:请参阅下面的代码完整答案

uitableview uigesturerecognizer ios swift3

0
推荐指数
1
解决办法
5899
查看次数

为什么我的String比较在iOS 6中不起作用?

可能重复:
了解Objective-C中的NSString比较

我已经在应用程序的几个版本中使用了这个简单的代码,直到iOS 6字符串比较已经有效,但现在它失败了 - 为什么?

if(selectedCell.textLabel.text==@"Font"){
    NSLog(@"going to dofontpicker");
    [self doFontPicker];
}else if(selectedCell.textLabel.text==@"Color"){
    NSLog(@"going to do colorpicker");
    [self doColorPicker];
}
Run Code Online (Sandbox Code Playgroud)

iphone ios6

-3
推荐指数
1
解决办法
736
查看次数