可以更动态地设置而不是硬编码吗?
self.title = @"My Title";
// ^^^^^^^^^^^
我希望标题是用户点击的行的名称,而不是硬编码的标题名称
在我的viewController中,我有状态名称。我希望标题是用户点击的州名。有什么建议吗?
提前致谢
答案 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传递字符串,并从推送的视图控制器内部设置它。无论哪种方式。
但是没有必要将整个表视图暴露给底层视图控制器。