ios - 在 Objective-C 中使用 block 传递数据
<p><p>我有两个 ViewController ,分别是 ViewControllerA 和 ViewControllerB。</p>
<p>在 ViewcontrollerB 上有 tableview 单元格。单击表格 View 单元格时,我想将在 ViewControllerB 上选择的数据发送到 ViewControllerA 上的标签。</p>
<p>我知道它可以通过多种方式实现,但是如何通过 block 来实现。请建议。</p>
<p>提前致谢!</p>
<p> ViewControllerB</p>
<pre><code>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *viewArr = ;
NSLog(@"the value obtained on cell is %@",viewArr);
ViewController *vc=[init];
vc.aSimpleBlock(viewArr);
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p><strong>在您的 ViewController A 中</strong> </p>
<p><strong>1)</strong> 为 block 声明一个 typedef 说 <code>typedef void (^simpleBlock)(NSString*);</code></p>
<p><strong>2)</strong> 创建一个像 </p> 这样的 block 变量
<pre><code>@property(nonatomic,strong)simpleBlockaSimpleBlock;
</code></pre>
<p><strong>3)</strong>在viewDidAppear/viewDidLoad中定义这个 block </p>
<pre><code>aSimpleBlock = ^(NSString* str){
NSLog(@"Str is the string passed on tableView Cell Click..!!");
};
</code></pre>
<p><strong>在你的 ViewController B 你有 tableView 的地方</strong></p>
<p><strong>1)</strong> 在 <code>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath</code></p>
<p>只需将您的 <code>block</code> 称为 </p>
<pre><code>your_VC_A_Object.aSimpleBlock("Your_Label_String_here");
</code></pre></p>
<p style="font-size: 20px;">关于ios - 在 Objective-C 中使用 block 传递数据,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/42384215/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/42384215/
</a>
</p>
页:
[1]