小编jrt*_*ton的帖子

故事板和CustomCells

我是Objective-C的新手并尝试创建自定义单元格.在故事板(在Xcode 4.2下)我正在推动一个TableViewController.在这个控制器我正在显示一些简单的单元格,但现在我想自定义它们.(在较旧版本的Xcode中,我使用的是这样的东西:

if (cell == nil) {
        NSArray * topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyNib" owner:nil options:nil];
        for(id currentObject in topLevelObjects) {
            if([currentObject isKindOfClass: [UITableViewCell class]]) {
                cell = (detailViewCell *) currentObject;
                break;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

加载我的自定义单元格,但现在这不再工作,因为我收到一个错误,找不到Nib文件"MyNib",当然..因为我正在使用故事板..但我该如何解决?如何从Storyboard加载CustomCell?

编辑:"哈哈,我是个白痴......我自己解决了这个问题.

static NSString *CellIdentifier = @"detailsViewCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Run Code Online (Sandbox Code Playgroud)

我认为这些行创建了一个标识为"detailsViewCell"的新标准单元格,所以我还没有将其更改为我的自定义单元格标识符,但是,是的,而不是它们加载我创建的自定义单元格.:)现在一切正常!"

xcode cells ios uistoryboard

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

使用prepareForSegue的UITableView didSelectRowAtIndexPath但未调用didLoadView

我正在学习iOS,我使用iOS 5编写了一个简单的iPhone应用程序.该应用程序显示了一个填充了Speakers名称的UITableView,当我选择其中一个名称时,它应该转到UIViewController并显示有关该人的详细信息(名称,地址等),所以它真的有两个ViewControllers,一个UITableViewController和UIViewController(都是子类).

所以,在MICSpeakersTableViewController:UITableViewController我有这个:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MICSpeakerDetailViewController *detailViewController = [[MICSpeakerDetailViewController alloc] initWithNibName:@"Detail" bundle:nil];    

    [detailViewController setSpeaker:[[self getSpeakers] objectAtIndex:indexPath.row]];
    [self.navigationController pushViewController:detailViewController animated:YES];    
}
Run Code Online (Sandbox Code Playgroud)

当我选择它并填充扬声器时会调用它(因为它不是nil和描述匹配).

然后我在同一个实现中有这个:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSIndexPath *indexPath = [ self.tableView indexPathForCell:sender];

    if ([segue.identifier isEqualToString:@"Detail"])
        [segue.destinationViewController setSpeaker:[[self getSpeakers] objectAtIndex:indexPath.row]];
}
Run Code Online (Sandbox Code Playgroud)

哪个也被调用,segue.identifier是Detail,而destinationViewController的扬声器设置正确(不是nil,描述匹配).我不太清楚为什么我必须再次设置它,因为我在didSelectRowAtIndexPath中设置它但我再次设置它似乎无害.

最后,在MICSpeakerDetailViewController中,调用initWithNibName方法,self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 返回一个实例.

但是,segue永远不会发生,并且从不调用viewDidLoad.

它可能很小但我无法弄清楚......有什么建议吗?

编辑:这是故事板的屏幕截图,显示了segue和控制器:

在此输入图像描述

iphone objective-c ios5

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

无法从UITableViewCell中删除标签

我有一个名为"TaskTable"的UITableView,我在这个方法的TaskTable的每个单元格的contentview中添加了一个标签

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
Run Code Online (Sandbox Code Playgroud)

我的标签标签是50,我在表格视图的构建单元格中使用,而不是自定义单元格.

现在,当我尝试使用此代码从TaskTable中删除我的标签时:

for(UILabel *lbl in [cell subviews])
    {
       if(lbl.tag == 50)
        {
          [lbl removeFromSuperview];
        }

   }
Run Code Online (Sandbox Code Playgroud)

如果条件,代码不会输入此.为什么找不到标签?这是因为我使用内置单元格只找到自己的文本标签,或者还有其他一些我遗漏的问题?

uitableview ios

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

更改路径时CAShapeLayer不会更新

我正在使用CAShapeLayer.我试图使它的路径在鼠标事件发生时改变.例如,当发生鼠标按下事件时,CGMutableRefPath会将路径附加到a ,然后将形状图层的路径设置为它.

问题:当我CAShapeLayer使用新路径设置路径时,除非我这样做,否则不会使用新路径更新显示.如何告诉系统形状图层的路径已更改并重绘自身?

注意:当我创建可变路径的副本并将其传递时,它可以正常工作,但每次执行复制都不会有效并导致计算机在有很多路径时变慢.

CGMutablePathRef paths = CGPathCreateMutable();
CAShapeLayer *shapeLayer = [CAShapeLayer layer];

- (void)mouseDown:(NSEvent *)event {
    CGPathAddEllipseInRect(paths, nil, rect);
    self.shapeLayer.path = paths; // Works once, but subsequent calls do nothing
    self.shapeLayer.path = CGPathCreateCopy(paths); // Works, but super slow
}
Run Code Online (Sandbox Code Playgroud)

cocoa calayer cashapelayer

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

二元运算符“|” 不能应用于“Int”和“UInt8”类型的操作数

我希望or在 2 位图上执行简单的逻辑,但 Swift 认为这是错误的:

let u: UInt8 = 0b1
let i: Int = 0b10
i | u // Binary operator '|' cannot be applied to operands of type 'Int' and 'UInit8'
Run Code Online (Sandbox Code Playgroud)

有什么方法可以符合类型推断并且仍然有效吗?

我总是可以这样做i | Int(u) // 3,但我认为这并不是最佳选择。

binary type-conversion unsigned-integer swift

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

设置UITextView的高度约束

我对iOS开发相当新,并且很难将UITextView调整为内容.我已经找到了几个计算字符串渲染大小和/或更新textview的帧大小的例子,但是我似乎无法让它们起作用.

当我在视图中添加UITextView时,它会添加一个高度约束,我认为它将其锁定到特定高度.我如何解决它,通过代码更新约束,和/或让我的UITextView垂直调整大小以显示我的内容?

uitextview ios autolayout

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

RACSignal combineLatest使用多个UIControl

我正在尝试使用Reactive Cocoa,我在组合来自多个UIControl的信号时遇到了麻烦.

我正在为UIEdgeInsets创建一个编辑器,并有四个UISteppers,用于顶部,左侧,底部和右侧插入.

想要做的是:

RAC(self.insets) = [RACSignal combineLatest:@[
          [topStepper rac_signalForControlEvents:UIControlEventValueChanged],
          [leftStepper rac_signalForControlEvents:UIControlEventValueChanged],
          [bottomStepper rac_signalForControlEvents:UIControlEventValueChanged],
          [rightStepper rac_signalForControlEvents:UIControlEventValueChanged]
          ] reduce:^(UIStepper *top, UIStepper *left, UIStepper *bottom, UIStepper *right) {
              return [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(top.value, left.value, bottom.value, right.value)];
          }];
Run Code Online (Sandbox Code Playgroud)

但是,这绝不会导致信号被处理.

如果我只包含一个信号,如下所示:

RAC(self.insets) = [RACSignal combineLatest:@[
    [topStepper rac_signalForControlEvents:UIControlEventValueChanged]]
    reduce:^(UIStepper *top) {
        return [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(top.value, 0.0,0.0,0.0)];
    }];
Run Code Online (Sandbox Code Playgroud)

它按预期工作(观察任何其他步进器单独工作正常)但对于多个控件,我什么也得不到.我可以通过观察每个控件作为单独的信号来解决,但这似乎忽略了combineLatest方法的要点.我做错了什么,或者我应该在RAC项目上提出问题?

ios reactive-cocoa

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

为什么awakeFromInsert被调用两次?

我已经实现awakeFromInsert了在我的核心数据对象中设置一些默认值和关系.但是,该方法被调用两次,这意味着我添加的to-many值被多次添加.

我正在使用父和子托管对象上下文.

是什么赋予了?

cocoa cocoa-touch core-data objective-c

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

如何在OauthSwift库中设置回调URL

我正在开发一个项目,我正在实施OAuthSwift库,以连接到使用OAuth1和OAuth2的几个不同的社交网站.

我将应用程序设置为加载Web视图,将我带到我的社交网站,但我无法让应用程序重定向回来.我加载凭据后,它会要求我授予对应用程序进行授权的权限,但是一旦我这样做,就会加载我的社交网站主页.

我可以导航回应用程序,但它没有注册它已获得访问我的帐户的权限.

这是我第一次使用OAuth,发现回调网址令人困惑.

我将非常感谢帮助解释如何让Web视图重定向回我的应用程序以及如何设置应用程序的URL.

class ViewController:UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func postToTumblr(sender: AnyObject) {
    let oauthSwift = OAuth1Swift(
        consumerKey: "consumerKey",
        consumerSecret: "secretKey",
        requestTokenUrl: "https://www.tumblr.com/oauth/request_token",
        authorizeUrl: "https://www.tumblr.com/oauth/authorize",
        accessTokenUrl: "https://www.tumblr.com/oauth/access_token"
    )

    oauthSwift.authorizeWithCallbackURL(NSURL(string: "com.myCompany.sampleApp")!,
        success: { credential, response in
            // post to Tumblr
            print("OAuth successfully authorized")
        }, failure: {(error:NSError!) -> …
Run Code Online (Sandbox Code Playgroud)

tumblr ios oauth-1.0a

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

使用从JSON数据中提取的值时NSInvalidArgumentException

我正在尝试检索以下值id:

{"id":1,"name":"XYZ"}
Run Code Online (Sandbox Code Playgroud)

我用的时候:

NSString *jsonData = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
NSArray * myPeople = [jsonData JSONValue]; 

NSString *name = [[NSString alloc] init]; 
NSDictionary *person = [myPeople objectAtIndex:[indexPath row]]; 
name = [NSString stringWithString:[person valueForKey:@"id"]]; 
name = [name stringByAppendingString:@". "]; 
name = [name stringByAppendingString:[person valueForKey:@"name"]]; 
name = [name stringByAppendingString:[person valueForKey:@"id"]]; 

cell.textLabel.text = name;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException'
reason: '-[NSCFNumber length]: unrecognized selector sent to instance 0x4e7f8b0
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

iphone json objective-c ios

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