如何在uitableview中为一个按钮提供两个动作?

时间:2017-03-22 10:37:15

标签: ios objective-c uitableview uibutton uiactionsheet

我一直在寻找解决方案,但似乎无法找到适合我的解决方案。如何在iOS Objective C中为一个UIButton执行两个操作。

我的应用包含"登录用户"和"访客用户"。

  • 如果登录用户进入#include "stdlib.h" #include "crtdbg.h" int main() { FILE *fStream = nullptr; if (_tfopen_s(&fStream,_T("TestFTell.txt"), _T("rt,ccs=UTF-8"))) return 0; TCHAR szBuffer1[256], szBuffer2[256]; for (;;) { auto pos = ftell(fStream); _ASSERT(pos!=-1); if (!_fgetts(szBuffer1, _countof(szBuffer1), fStream)) break; auto retval1 = fseek(fStream,pos,SEEK_SET); _ASSERT(retval1!=-1); auto retval2 = _fgetts(szBuffer2, _countof(szBuffer2), fStream); _ASSERT(retval2!=0); _ASSERT(_tcscmp(szBuffer1, szBuffer2)==0); } return 0; } 查询按钮,则导航至一个控制器。
  • 如果"访客用户"进入UITableView查询按钮导航到另一个控制器

4 个答案:

答案 0 :(得分:0)

在登录后,您将了解登录用户的类型。根据用户类型移至相应的controller。你真的没有为同一个按钮设置多个动作。单击按钮时,检查登录的用户类型,即guest / login并推送到相应的控制器。

答案 1 :(得分:0)

例如。对于tableview单元格中的每个按钮,您可以在按钮上设置@selector()

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    .
    //do stuff
    .

    [cell.buttonSave addTarget:self action:@selector(btnSaveTap:) forControlEvents:UIControlEventTouchUpInside];

  if ([user isequaltostring:login user])
    cell.buttonSave.tag = <tagNumber>
   else
     cell.buttonSave.tag = <anothertagNumber>

    //do stuff
    return cell;
}

添加你可以像这样实现它的动作方法

- (void)btnSaveTap:(UIButton *)sender {

    //here you can check tag number for desired action

   if(sender.tag ==tagNumber) // 
 {
  // Navigate to login user
 }
else
{
 // Navigate to Guest user
 }
}

答案 2 :(得分:0)

您可以根据用户登录标记管理操作,而不是添加两个操作。

即如果用户是登录用户,那么isLogin标志将为true,否则它将为false。

为此您可以使用以下用户默认值。

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isLogin"];//here yes if normal user and no if guest user.
[[NSUserDefaults standardUserDefaults] synchronize];

在按钮单击中,您可以保留它。

- (void)btnclick:(UIButton *)sender {

  //here you can check login flag

 if([[NSUserDefaults standardUserDefaults] boolForKey:@"isLogin"]){
    // Navigate to login user
   }
   else{
    // Navigate to Guest user
   }
}

答案 3 :(得分:0)

您可以尝试这样

- (IBAction)navigateToEnquire:(id)sender {

    NSLog(@"Button pressed: %@", [sender currentTitle]);    

   if ([[sender currentTitle] isEqualToString: @"login user"]) {

        // do something

   } else if ([[sender currentTitle] isEqualToString: @"guest user"]) {

     // do something

   }

}