Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用prepareForSegue从UIButton传递字符串_Ios_Uibutton_Uitableview_Segue - Fatal编程技术网

Ios 如何使用prepareForSegue从UIButton传递字符串

Ios 如何使用prepareForSegue从UIButton传递字符串,ios,uibutton,uitableview,segue,Ios,Uibutton,Uitableview,Segue,我将一个字符串从UIButton发送到下一个UITableViewController,该字符串是UIButton标题(星期一…星期日)。NSPredicate使用该字符串按天筛选我的表信息 @property (nonatomic, weak) NSString *dayOTW; 然后转到我的下一个屏幕 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Make sure your segu

我将一个字符串从UIButton发送到下一个UITableViewController,该字符串是UIButton标题(星期一…星期日)。NSPredicate使用该字符串按天筛选我的表信息

@property (nonatomic, weak) NSString *dayOTW;


然后转到我的下一个屏幕

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"SendWeekDay"])
{
    // Get reference to the destination view controller
    ViewController *vc = [segue destinationViewController];

    // Pass any objects to the view controller here, like...
    vc.dayOTW = dayOTW;
   }
}
第一次选择按钮时,我的表格中没有显示任何信息,如果我返回并再次选择按钮,我的表格将显示当天的正确信息

我做错了什么

还有一个问题与上述有关。 我有7个UIButtons,一周中每天一个,如何用一个segue从所有UIButtons中分离出来


谢谢

在iAction方法之前调用segue,因此第一次单击变量时不会设置该变量

如果segue连接到您的按钮,那么它将是prepareforsgue中的
发送者
,因此您实际上不需要操作方法。只需在prepareForSegue中获取标题:

UIButton *dayButton = (UIButton*)sender
vc.dayOTW = sender.titleLabel.text;
要将同一个序列连接到所有按钮,必须按ctrl键从每个按钮拖动,但为所有序列指定相同的标识符。这在情节提要上看起来很混乱,因此另一种方法是直接从源代码视图控制器创建一个单独的segue,并在操作方法中(在本例中,您需要该方法,并将连接到所有按钮)调用
performsguewithidentifier:sender:

-(IBAction)dayButtonPressed:(UIButton*)sender
{
    [self performSegueWithIdentifier:@"SendWeekDay" sender:sender];    
}

然后将按钮作为发送方传递给
performsgue
方法,这样您就可以使用上面列出的代码

segue在iAction方法之前被调用,因此第一次单击时不会设置该变量

如果segue连接到您的按钮,那么它将是prepareforsgue中的
发送者
,因此您实际上不需要操作方法。只需在prepareForSegue中获取标题:

UIButton *dayButton = (UIButton*)sender
vc.dayOTW = sender.titleLabel.text;
要将同一个序列连接到所有按钮,必须按ctrl键从每个按钮拖动,但为所有序列指定相同的标识符。这在情节提要上看起来很混乱,因此另一种方法是直接从源代码视图控制器创建一个单独的segue,并在操作方法中(在本例中,您需要该方法,并将连接到所有按钮)调用
performsguewithidentifier:sender:

-(IBAction)dayButtonPressed:(UIButton*)sender
{
    [self performSegueWithIdentifier:@"SendWeekDay" sender:sender];    
}

然后将按钮作为发送方传递给
performsgue
方法,这样您就可以使用上面列出的代码

你能编辑你的问题标题使其更具体吗?请参阅此答案:你能编辑你的问题标题使其更具体吗?请参阅此答案:我如何检查是否已首先调用该序列?或者我需要先初始化字符串吗?我稍后会尝试。如果您愿意,可以在每个方法中添加一个日志,但我的回答是,您不需要字符串变量-该按钮在prepareForSegue中用作发送者,因此只需从该按钮获取文本。现在,当我单击该按钮时,我收到了此错误。”2012-05-01 11:41:33.097 passingdata[23451:fb03]嵌套推送动画可能导致导航栏损坏2012-05-01 11:41:33.455 passingdata[23451:fb03]在意外状态下完成导航转换。导航栏子视图树可能已损坏。2012-05-01 11:41:33.457 passingdata[23451:fb03]开始/结束外观转换的不平衡调用。“它正在传递信息,但创建了一个额外的视图。我需要单击“上一步”两次才能访问我的rootviewController,有什么想法吗?”。谢谢你还没有一个segue连接到按钮上,是吗(所以它会执行两次segue)?除此之外,我不确定-你应该问一个新问题。。它是相连的。。非常感谢您的帮助。我怎样才能先检查是否已呼叫segue?或者我需要先初始化字符串吗?我稍后会尝试。如果您愿意,可以在每个方法中添加一个日志,但我的回答是,您不需要字符串变量-该按钮在prepareForSegue中用作发送者,因此只需从该按钮获取文本。现在,当我单击该按钮时,我收到了此错误。”2012-05-01 11:41:33.097 passingdata[23451:fb03]嵌套推送动画可能导致导航栏损坏2012-05-01 11:41:33.455 passingdata[23451:fb03]在意外状态下完成导航转换。导航栏子视图树可能已损坏。2012-05-01 11:41:33.457 passingdata[23451:fb03]开始/结束外观转换的不平衡调用。“它正在传递信息,但创建了一个额外的视图。我需要单击“上一步”两次才能访问我的rootviewController,有什么想法吗?”。谢谢你还没有一个segue连接到按钮上,是吗(所以它会执行两次segue)?除此之外,我不确定-你应该问一个新问题。。它是相连的。。非常感谢你的帮助