self.title = @“我的头衔”;

时间:2009-08-17 19:42:20

标签: iphone objective-c iphone-sdk-3.0

可以更动态地设置而不是硬编码吗?

self.title = @"My Title";
//           ^^^^^^^^^^^

我希望标题是用户点击的行的名称,而不是硬编码的标题名称

在我的viewController中,我有状态名称。我希望标题是用户点击的州名。有什么建议吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

你的问题不是那么清楚。通常,您可以将当前视图的标题设置为任何NSString对象,因此

self.title = string;

然而,我猜你的问题是,当你点击 UITableViewCell 时,你是否可以设置创建并进入视图的视图的图块。如果是这样,答案是肯定的,你可以。您可以在创建新视图时在视图控制器的 tableView:didSelectRowAtIndexPath:方法中执行此操作。

您需要将 indexPath 变量或单元格 cell.textLabel.text 中的文本标签传递到自定义init方法。因此,如果您有一个名为 nextController 的视图控制器,您可以执行类似的操作,

NextController *next = [[NextController alloc] initWithIndexPath: indexPath];
[appDelegate.navController pushViewController:next animated: YES];
[next release];

在主控制器的 tableView:didSelectRowAtIndexPath:方法内。然后在 NextController 类中,您将沿着这些行重写 init 方法,

-(id)initWithIndexPath: (NSIndexPath *)indexPath {
    if ( self == [super init] ) {
        indexVariable = indexPath;
    }
    return self;
}

@interface 中声明 indexVariable 之后

。您需要做的就是从新控制器的 viewDidLoad:方法设置新视图的标题,使用 NSIndexPath 获取单元格的标签,或者直接在而是通过了标签。

答案 1 :(得分:0)

Alasdair的回答是正确的,但可能比你需要的更复杂。

在你的 tableView:didSelectRowAtIndexPath:方法中,你可能看起来像(如Alasdair的例子):

ViewController *viewController = [[ViewController alloc] init]; //some flavor of "init"
[self.navController pushViewController:viewController animated: YES];
[viewController release];

您真正需要做的就是添加:

[viewController setTitle:<<the string you want to set it to here>>];

在第一行之后。或者,您可以通过自定义init传递字符串,并从推送的视图控制器内部设置它。无论哪种方式。

但是没有必要将整个表视图暴露给底层视图控制器。