0

我花了几个小时试图解决这个问题我试图用参数初始化一个类

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Fetch the value of the selected row in NSString
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   // NSString *tableRowValue = cell.text;
     tableRowValue = [[listOfItems objectAtIndex:indexPath.row]objectForKey: @"clientId"];


    //Call the next view

    ContactsList *contactsList = [[ContactsList alloc] initWithNibName:NSStringFromClass([ContactsList class]) bundle:nil];
    @try {

        [self presentModalViewController:contactsList animated:YES];
    }
    @catch (NSException *ex) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"%@",ex]
                                                       delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
    }



    contactsList.modalTransitionStyle = UIModalTransitionStyleCrossDissolve ;

    //Initialize the view with the clicked row value thwough NSString variable
    [contactsList init:tableRowValue];

}

这行代码

[contactsList init:tableRowValue];

我收到以下警告:未使用表达式结果

在 ContactsList 类中,未调用 init 方法

谢谢您的帮助

4

2 回答 2

0

ContactList 对象已经在 initWithNibName: 方法中初始化,该方法又调用从 NSObject 继承的 init 方法(不带参数)。

如果您需要在初始化后设置视图,请创建一个名为“setupWithTableRowValue:”或类似名称的方法。

于 2013-04-18T07:59:56.657 回答
0

你不应该那样打电话initinit应该在分配对象后首先调用,然后再调用。在您的情况下init,已经通过initWithNibName.

改用一些二传手。你的二传手不需要返回任何东西。init 总是返回 id。所以 contactsList = [contactsList init:tableRowValue]; 如果在 contactList = [ContactsList alloc]; 之后直接调用它会很好。因为init实际上可能返回另一个对象,而不是调用它的对象。您没有使用返回值,因此理论上可以释放您的对象。

再次:使用 setter 或类似方法传递tableRowValuecontactsList.

于 2013-04-18T08:28:17.027 回答