小编nmo*_*lot的帖子

带有[NSString stringWithFormat:]的Nil字符串显示为"(null)"

我有一个'Contact'类,它有两个属性:firstName和lastName.当我想显示联系人的全名时,我就是这样做的:

NSString *fullName = [NSString stringWithFormat:@"%@ %@", contact.firstName, contact.lastName];
Run Code Online (Sandbox Code Playgroud)

但是当firstName和/或lastName设置为nil时,我在fullName字符串中得到一个"(null)".为了防止它,这是我做的:

NSString *first = contact.firstName;
if(first == nil)  first = @"";
NSString *last = contact.lastName;
if(last == nil)  last = @"";
NSString *fullName = [NSString stringWithFormat:@"%@ %@", first, last];
Run Code Online (Sandbox Code Playgroud)

有人知道更好/更简洁的方法吗?

string iphone nsstring

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

UITableView:在空部分中添加部分页脚视图时崩溃

这是我第一次在这里提出一个问题,但我不得不说这个网站在过去几个月对我来说是一个巨大的帮助(iphone-dev-wise),我感谢你.

但是,我找不到任何有关此问题的解决方案:我有一个带有2个部分的UITableView,并且第一次启动应用程序时没有行.用户可以根据自己的意愿稍后填写这些部分(这里的内容不相关).UITableView在填充行时看起来很好,但是当没有行时看起来很丑陋(2个标题部分粘在一起,中间没有空格).这就是为什么我想在没有行时添加一个漂亮的"无行"视图.

我使用了viewForFooterInSection:

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {

if(section == 0)
{
    if([firstSectionArray count] == 0)
        return 44;
    else 
        return 0;
}

return 0;

}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{

    if(section == 0)
    {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(200, 10, 50, 44)];
        label.backgroundColor = [UIColor clearColor];
        label.textColor = [UIColor colorWithWhite:0.6 alpha:1.0];
        label.textAlignment = UITextAlignmentCenter;
        label.lineBreakMode = UILineBreakModeWordWrap; 
        label.numberOfLines = 0;
        label.text = @"No row";
        return [label autorelease];
    }

    return nil;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2;
}

- …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview

11
推荐指数
2
解决办法
9200
查看次数

如何在1个viewController中管理2个tableviews?

有谁知道在一个viewController中管理几个tableViews的简单方法?到目前为止,我一直在这样做:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{
if(tableView == self.tableView1) 
return 1;
else if(tableView == self.tableView2) 
return 2;
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if(tableView == self.tableView1) 
return @"bla";
else if(tableView == self.tableView2) 
return @"blabla";
}

-(NSString *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView == self.tableView1) 
...
else if(tableView == self.tableView2) 
...
}
Run Code Online (Sandbox Code Playgroud)

我发现我必须为每个单一委托方法使用if/else语句真的很烦人.另外,当有很多tableView时,它真的很难读.此外,我对NSURLConnection等有同样的问题......只要我有几个对象响应相同的委托协议,事情就会变得混乱.

让事情变得简单的最好方法是什么?谢谢

iphone delegates uitableview

8
推荐指数
2
解决办法
7782
查看次数

标签 统计

iphone ×3

uitableview ×2

delegates ×1

nsstring ×1

string ×1